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