我如何訪問Text.text項目的ListView代表內從事件處理程序的ListView訪問委託項目,示例代碼(可能有語法錯誤)以下。QML爪哇 - 從事件處理程序
ListView {
id: mainLView
model: ListViewModel {}
delegate: Rectangle {
id: theRect
Text {
id: theText
text: ""
}
}
onMovementEnded {
//here is where I would like to access the text in Text, e.g
theText.text = "New Value"
}
}
由於無法從事件處理程序訪問文本,因此我的代碼無法使用。我如何完成設置文本值?
編輯:爲了完整性: 我可以將項目添加到通過Java代碼(表觀負載期間)ListView中,通過代碼又名
mainLView.model.append({'name': "First Value","city":"London"});
var myValue = model.get(currentIndex).city // or name
訪問事件內部在ListView的值(一個或多個)
但我仍然無法找到一種方法來爲委託文本{text:「」}賦值。
EDIT 2 7月10日 這裏是什麼,我想實現一個更完整的代碼示例。
ListView {
id: mainLView
model: ListModel { id: mainModel}
delegate: Rectangle {
id: theRect
Text {
id: theText
text: nameX
}
}
Component.onCompleted: {
for (var x=1; x < 99; x++) {
var data = {'nameX': "Name: " + x, "numberX":x};
mainModel.append(data);
}
}
onMovementEnded {
//here I want to set the value to numberX e.g (this does not work)
theText.text = mainView.model.get(currentIndex).numberX
}
}
這個問題很難回答,因爲它不清楚你真正想從你的例子中得到什麼。 ListView呈現每個ListModel元素的委託。你在問如何用值更新每個元素或詢問如何更新特定元素?這個問題真的似乎歸結爲你如何指定你想編輯的元素。一旦您向我們提供了這些信息,它可以幫助您獲得索引並進行更新。 – Deadron
Deadron,感謝您的評論。我想在移動結束時更新索引處的值(上面的代碼很簡短,但表明了問題)。 – Nepaluz
我想在信號內移動結束時更新索引值(並因此更新列表視圖)。我的完整代碼實際上有兩個項目給listmodel中的每個元素;我想在列表視圖滾動時顯示一個值,而另一個值則停止顯示,但爲了簡明起見,我縮減了上面的代碼以顯示我需要幫助的位置。讓我知道你是否想要一個更完整的代碼示例。 – Nepaluz