【发布时间】:2016-11-19 19:36:46
【问题描述】:
我在将我的 C++ 数据模型暴露给 QML 中的 ListView 时遇到问题。 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() 也未执行。
问题可能出在哪里?
【问题讨论】: