实现派生的“QAbstractListModel :: data”方法。
Q_DECLARE_METATYPE(的myType);甚至没有编译......返回我的自定义对象会导致编译错误。
如何做到这一点?
答案 0 :(得分:4)
QVariant::fromValue<QObject *>(object);
用您自己的类型替换QObject,但在其上使用Q_DECLARE_METATYPE。请记住您声明的内容:MyType
或MyType *
。既然你在谈论从QAbstractItemModel::data
传递一个对象,那么我想你想提供一个指向该对象的指针,这是正确的吗?如果是这样,那么声明如下:
typedef MyType * MyTypeStar
Q_DECLARE_METATYPE(MyTypeStar);
这将使元类型系统知道MyType *
。
如果你想传递对象本身,然后声明你尝试的方式,但要确保你正确定义你的类型:
Q_DECLARE_METATYPE:只要提供公共默认构造函数,公共复制构造函数和公共析构函数,此宏就会使类型Type为QMetaType。需要在QVariant中使用Type类型作为自定义类型。
答案 1 :(得分:2)
为什么不把它作为QObject放在QVariant中? qVariantFromValue(youObjectPointer)