我在将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