Я реализовал модель в c ++ и хочу назначить Qml, но сообщение об ошибке показало, что:
Невозможно назначить функцию свойству любого типа, кроме var.
В чем может быть проблема с моим кодом, спасибо!
.qml
ListView{
anchors.fill: parent
model:MyModel{
list:data
}
delegate: objRecursiveDelegate
}
main.cpp
qmlRegisterType<MyModel>("Model",1,0,"MyModel");
qmlRegisterUncreatableType<Data>("Model",1,0,"Data",QStringLiteral("Data should not be created in QML"));
Data data;
engine.rootContext()->setContextProperty(QStringLiteral("data"), &data);
MyModel.h (попробуйте определить с помощью QAbstractListModel)
class Data;
class MyModel : public QAbstractListModel
{
Q_OBJECT
Q_PROPERTY(Data *list READ list WRITE setList)
public:
Data *list() const;
void setList(Data *list);
private:
Data* mList;
}
MyModel.cpp
Data *MyModel::list() const
{
return mList;
}
void MyModel::setList(Data *list)
{
beginResetModel();
if (mList)
mList->disconnect(this);
mList = list;
/..../
endResetModel();
}
data.h
class Data:public QObject
{
Q_OBJECT
public:
explicit Data(QObject *parent = nullptr);
/..../
private:
QVector<unit> menu;
};