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

Jas*_*enX 2 qt

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

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

如何才能做到这一点?

ak.*_*ak. 5

QVariant::fromValue<QObject *>(object);
Run Code Online (Sandbox Code Playgroud)

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

typedef MyType * MyTypeStar
Q_DECLARE_METATYPE(MyTypeStar);
Run Code Online (Sandbox Code Playgroud)

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

如果要传递对象本身,请声明尝试的方法,但请确保正确定义类型:

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