내가 QML에서 ListView에 내 C++ 데이터 모델을 노출하는 데 문제로 자신의 QT C++ 데이터 모델을 통합. QML은 각 행의 속성을 찾을 수 없습니다.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는 이러한 정의가
Email: undefined
내가 무엇을 놓치고 : 나는 이메일과 암호 목록을 표시 할 때
Identities {
id: identidades
}
ListView {
anchors.fill: parent
model: identidades
delegate: Row {
Text { text: "Email: " + model.email}
}
}
지금,이 출력 문제입니다? 디버거로 코드를 디버깅 할 때 실행되는 유일한 방법은 Identities :: rowCount()입니다. Identities :: index()도 실행되지 않으며 Identities :: data()도 실행되지 않습니다.
어디에서 문제가 발생할 수 있습니까? 모델의 역할을 제공
는 말처럼 내가 할 경우 내가 얻을 : 오류 "ReferenceError가 메일이 정의되어 있지 않습니다." 나는 그것을 이미 시도했다 – Nulik
"모델에서 역할을 제공하는 것이 적절하게 구현된다"는 부분을 강조한다. – dtech
문제는 위임자와 같다고 생각합니다. 델리게이트는 data() 또는 index() 메서드를 호출하지 않으므로 모델 클래스에서 아무 것도 실행되지 않습니다. 어디서나 중단 점이 있지만 아무런 호출이 없습니다. – Nulik