我如何访问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