我有一个名为QAbstractListModel
的ObjectListModel
子类,其中包含方法remove()
:
class ObjectListModel : public QAbstractListModel
{
public:
Q_INVOKABLE void remove(int index);
}
但是,当我尝试从QML中调用
remove()
时,出现以下错误:TypeError: Property 'remove' of object QAbstractListModel(0x13c3c0) is not a function
我通过
ObjectListModel
的属性公开MyApplication
的实例:Q_PROPERTY(ObjectListModel *uploadModel
MEMBER _uploadModel
NOTIFY uploadModelChanged)
然后在
main()
中注册以下类型:qRegisterMetaType<ObjectListModel*>("ObjectListModel*");
知道这里发生了什么吗?
最佳答案
您缺少Q_OBJECT
宏。
另外,您注册不正确,您需要以下内容:
qmlRegisterType<List>("ModuleName", 1, 0, "ObjectListModel");
QObject
是隐式元类型,因为它们得到了moc处理(如果您不忘记宏的话)。因此,无需将它们注册为元类型。关于c++ - QAbstractListModel的子类仅在QML中可用作父类(super class),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43897232/