我在將C++數據模型暴露給QML中的ListView時遇到問題。 QML無法找到每一行的屬性。將您自己的QT C++數據模型與QML集成
我有這個類(QT 5.7):
class Identity : public QObject
{
Q_OBJECT
Q_PROPERTY(QString email READ email WRITE setEmail NOTIFY emailChanged);
Q_PROPERTY(QString password READ password WRITE setPassword NOTIFY passwordChanged);
...
}
而且我有一個存儲標識對象的模型類:
class Identities: public QAbstractItemModel {
Q_OBJECT
private:
QMap<QString,Identity*> identities_map;
...
}
我也註冊它的main.cpp:
qmlRegisterType<Identities>("project_identities",1,0,"Identities");
我main.qml有以下定義:
Identities {
id: identidades
}
ListView {
anchors.fill: parent
model: identidades
delegate: Row {
Text { text: "Email: " + model.email}
}
}
現在的問題是,當我顯示的電子郵件和密碼的清單,這是輸出:
Email: undefined
什麼我失蹤? 當我用調試器調試我的代碼時,唯一正在執行的方法是Identities :: rowCount()。不會執行Identities :: index(),也不會執行Identities :: data()。
問題在哪裏?
如果我像你說的那樣做,我會得到「ReferenceError:email is not defined」錯誤。我已經嘗試過了 – Nulik
強調「在模型中提供角色是否正確實施」部分。 – dtech
我認爲問題出在委託人身上。該委託不調用data()或index()方法,因此在模型類中不會執行任何操作。我在它的任何地方都有斷點,但沒有電話 – Nulik