我遇到了问题我无法找到它的解决方案,我希望你能在这里找到它:我做了一个ListView及其模型及其委托等等,如下所示:
Item {
id: creation; width: parent.width ; height: parent.height
.....
ListView {
id: mainViewLiist
model: CreationModel {id: modelCreation}
delegate: delegateCreation
width: parent.width; height: parent.height; x: -(screen.width * 1.5);
cacheBuffer: 100;
}
}
委托包括Text,TextEdit等......这样的事情:
Component {
id: creationDelegate
Item {
id: itemCreate
....
Row {
id: rowSerie
spacing: 5
Text {
id: seriesLabel
text: "Series:"
....
}
TextEdit {
id: seriesTextEdit
text: ""
....
}
}
....
}
....
}
在同一个项目“创造”中,还有一个带有两个按钮的工具栏,如下所示:
ToolBar { id: toolBarCreation; height: 40;
width: parent.width;
opacity: 1.0
button1Label: "Back"
button2Label: "Create"
onButton1Clicked:
{
...
}
onButton2Clicked:
{
...
}
}
我想要的是:当我点击第二个按钮“创建”时,我想简单地用console.log(arg1,...)显示每个项目的TextEdit中写的名为“seriesTextEdit”的内容在listView中。例如,如果我的列表视图包含10个项目,并且用户在所有项目的所有TexTedit中插入了一个值,那么我该如何访问这些数据? 非常感谢你, Giammarco
答案 0 :(得分:6)
ListView可能是错误的类,因为它会销毁不在可见区域中的项目并创建可见的新项目。如果您不希望使用中继器。
无论如何,您可以使用ListView.contentItem.children访问ListView的子项。我试过,它包含一个额外的元素(可能是标题)。
我建议在列表项委托的根目录中为TextEdit文本(在我的示例中为seriesName)设置别名属性。可能你需要索引相同,因为如上所述,ListView可能不包含所有模型项的元素。 然后你可以使用循环来获取文本。
print(mainViewLiist.contentItem.children.length);
for (var i = 0, l = mainViewLiist.contentItem.children.length; i < l; i++) {
var child = mainViewLiist.contentItem.children[i];
print(i, ": ", child, "=", child.text);
}