我有一个名为QAbstractListModelObjectListModel子类,其中包含方法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/

10-08 21:32