У меня возникают проблемы с представлением моей модели данных C++ в ListView в QML. 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