我有这个类,注册它用作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;
答案 0 :(得分:1)
您确定index.data()可以转换为MyTimeLine吗?
T qvariant_cast ( const QVariant & value )
返回转换为模板类型T的给定值。 此函数等效于QVariant :: value()。
T QVariant::value () const
返回转换为模板类型T的存储值。调用canConvert()以查明是否可以转换类型。 如果无法转换该值,则会返回默认构造的值。