從本質上講,我有一個平常的ListView:如何在QML中訪問ListView的ListModel的ListElement的映射委託的數據?
Rectangle {
id: mylist
ListModel {
id: mylistModel
ListElement {
text: "blah1"
}
ListElement {
text: "blah2"
}
ListElement {
text: "blah3"
}
}
Component {
id: mylistDelegate
Text {
id: mylistDelegateText
text: text
property bool mylistDelegateTextEnabled: false
}
}
ListView {
id: mylistView
model: mylistModel
delegate: mylistDelegate
}
}
請忽略我可能會被截斷碼把重點放在什麼是重要的紛紛出臺任何問題。
反正現在我的問題是,我想訪問一個ListElement分配的代表,看看mylistDelegateTextEnabled的值是一個javascript循環。例如,此循環遍歷當前列表並給出模型中的ListElements的文本:
for(var i = 0; i < mylistModel.count; ++i) {
console.log(mylistModel.get(i).text);
}
這顯然工作正常。
現在我想基本上是這樣的:它似乎
for(var i = 0; i < mylistModel.count; ++i) {
console.log(mylistModel.get(i).text);
console.log(mylistModel.get(i).delegate.mylistDelegateTextEnabled);
}
唉,並不那麼容易。
幫助讚賞。
感謝您的回答!我試過並得到錯誤:無法分配給只讀屬性「textEnabled」。是的,我想從QML而不是JS分配。我可以這樣做嗎? – Svenstaro 2012-03-25 13:45:38
我想從錯誤中試圖設置代理內的'textEnabled'標誌,這將不起作用。相反,使用'model.setProperty()'直接更新模型。我會更新我的答案以便以這種方式演示它,而不是使用'Component.onCompleted'。 – 2012-03-25 14:05:35
這很完美,謝謝。 – Svenstaro 2012-03-27 20:30:02