我有这个类(class),注册它以用作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;

最佳答案

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

T qvariant_cast ( const QVariant & value )

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

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

关于c++ - 具有自定义类型的qvariant_cast,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22981421/

10-11 00:56