1

我有这个类,将其注册为 QVariant

class MyTimeLine
{
public:
   MyTimeLine(double kStart = 0, double kEnd = 1);
   void paint(QPainter *painter, const QRect &rect,
              const QPalette &palette)const;
private:
   double _kStartTime;
   double _kEndTime;
};
Q_DECLARE_METATYPE(MyTimeLine)

然后我在 QVariant 中转换它,当我想使用 qvariant_cast 并获取 MyTimeLine 对象时,我得到对象,由默认构造函数创建

myTask->setData(2,Qt::UserRole,
QVariant::fromValue(MyTimeLine(a,b)));

MyTimeLine taskTimeLine = qvariant_cast<MyTimeLine>(index.data());
//taskTimeLine._kStartTime = 0;
//taskTimeLine._kEndTime = 1; 
4

1 回答 1

2

您确定 index.data() 可以转换为 MyTimeLine 吗?

T qvariant_cast ( const QVariant & value )

返回转换为模板类型 T 的给定值。此函数等价于 QVariant::value()。

T QVariant::value () const

返回转换为模板类型 T 的存储值。调用 canConvert() 以查看是否可以转换类型。如果无法转换该值,则将返回默认构造的值。

于 2014-04-10T09:32:46.360 回答