QT:问题,我如何将自己的QObject派生自定义类作为“QVariant”返回?

时间:2011-03-18 17:24:51

标签: qt

实现派生的“QAbstractListModel :: data”方法。

Q_DECLARE_METATYPE(的myType);甚至没有编译......返回我的自定义对象会导致编译错误。

如何做到这一点?

2 个答案:

答案 0 :(得分:4)

QVariant::fromValue<QObject *>(object);

用您自己的类型替换QObject,但在其上使用Q_DECLARE_METATYPE。请记住您声明的内容:MyTypeMyType *。既然你在谈论从QAbstractItemModel::data传递一个对象,那么我想你想提供一个指向该对象的指针,这是正确的吗?如果是这样,那么声明如下:

typedef MyType * MyTypeStar
Q_DECLARE_METATYPE(MyTypeStar);

这将使元类型系统知道MyType *

如果你想传递对象本身,然后声明你尝试的方式,但要确保你正确定义你的类型:

  

Q_DECLARE_METATYPE:只要提供公共默认构造函数,公共复制构造函数和公共析构函数,此宏就会使类型Type为QMetaType。需要在QVariant中使用Type类型作为自定义类型。

答案 1 :(得分:2)

为什么不把它作为QObject放在QVariant中? qVariantFromValue(youObjectPointer)