我有一个问题,我找不到解决方案,我希望你能在这里找到它:我做了一个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;
}
}委托包括文本、TextEdit等...如下所示:
Component {
id: creationDelegate
Item {
id: itemCreate
....
Row {
id: rowSerie
spacing: 5
Text {
id: seriesLabel
text: "Series:"
....
}
TextEdit {
id: seriesTextEdit
text: ""
....
}
}
....
}
....
}在同一个项"creation“中,还有一个带有两个按钮的ToolBar,类似于:
ToolBar { id: toolBarCreation; height: 40;
width: parent.width;
opacity: 1.0
button1Label: "Back"
button2Label: "Create"
onButton1Clicked:
{
...
}
onButton2Clicked:
{
...
}
}我想要的是:当我点击第二个按钮"Create“时,我只想用console.log(arg1,...)来显示。在TextEdit中编写的内容称为listView中每一项的"seriesTextEdit“。例如,如果我的列表视图包含10个项目,并且用户在所有项目的所有TexTedit中插入一个值,我如何访问这些数据?非常感谢,Giammarco
发布于 2012-04-05 02:44:30
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);
}https://stackoverflow.com/questions/10002902
复制相似问题