QML을 사용하여 델리게이트 외부에서 모델 (하위 클래스 QAbstractItemModel
)의 데이터를 어떻게 가져 옵니까?QML의 C++ 모델에서 색인으로 데이터 가져 오기
I는 다음과 같이 그것을 시도 :
Identities {
id: identities_model
}
...
console.log(identities_model[0].email)
하지만 오류 얻을 : (
QVariant Identities::data(const QModelIndex &index, int role) const {
int row_num;
row_num=index.row();
if (role==EmailRole) {
QList <QString> qlist;
qlist=identities_map.keys();
if (row_num>=qlist.size()) return (QVariant());
return QVariant(qlist.at(row_num));
}
if (role==PasswordRole) {
QList <QString> qlist;
qlist=identities_map.keys();
if (row_num>=qlist.size()) return (QVariant());
Identity *identity;
identity=identities_map.value(qlist.at(row_num));
return QVariant(identity->password());
}
if (role==Qt::DisplayRole) {
return(QVariant());
}
}
내가 디버그 시도 :
TypeError: Cannot read property 'email' of undefined
내 data()
방법은 다음과 같이 정의된다 몇 가지 중단 점 넣기). Identities::data()
또는에 대한 호출을 차단할 수 없습니다.QML의 제 모델을 향해. 델리게이트 외부에서 내 모델의 데이터에 어떻게 액세스해야합니까? (특정 행, 특정 역할) 델리게이트를 사용할 때 내 모델은 완벽하게 작동합니다.
'at'보다는 보통 'get'입니까? 적어도'ListModel'에는'at'가없고'get' 함수 만 있습니다. – derM
정말 고마워요! 내 자신의 방법을 사용하여 데이터를 얻는 것이 좋은 해결책입니다. – Nulik
@derM -'set()'을 할 계획이라면 확실히'get()'을 원할 것입니다. 그렇게하지 않으면 일을 끝내는 한별로 중요하지 않습니다. 색인 0의 항목은 나에게 맞는 것 같습니다. – dtech