如何從使用QML的委託之外的模型中獲取數據(從QAbstractItemModel
中分類)?通過QML中C++模型的索引獲取數據
我想它是這樣的:
Identities {
id: identities_model
}
...
console.log(identities_model[0].email)
,但我得到一個錯誤:
TypeError: Cannot read property 'email' of undefined
我data()
方法是這樣定義的:
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());
}
}
我試着調試(放一些斷點),但不能攔截任何呼叫Identities::data()
或Identities::index()
從QML到我的模型。我應該如何在委託人之外的模型中訪問數據? (特定行,特定角色)當我使用委託時,我的模型完美無缺。
不是通常的名字'get'而不是'at'?至少'ListModel'沒有'at',只有'get'功能。 – derM
非常感謝!使用我自己的方法來獲取數據是一個很好的解決方案。 – Nulik
@derM - 如果你打算擁有'set()',你一定會想'get()'。如果你不這樣做,只要它完成了工作,這並不重要。在索引0的項目聽起來對我來說很合適。 – dtech