Gia*_*rco 1 listview textedit qml
我有一个问题,我找不到它的解决方案,我希望你在这里找到它:我做了一个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;
}
}
Run Code Online (Sandbox Code Playgroud)
委托包括Text,TextEdit等....这样的事情:
Component {
id: creationDelegate
Item {
id: itemCreate
....
Row {
id: rowSerie
spacing: 5
Text {
id: seriesLabel
text: "Series:"
....
}
TextEdit {
id: seriesTextEdit
text: ""
....
}
}
....
}
....
}
Run Code Online (Sandbox Code Playgroud)
在同一个项目"创建"中,还有一个带有两个按钮的工具栏,如下所示:
ToolBar { id: toolBarCreation; height: 40;
width: parent.width;
opacity: 1.0
button1Label: "Back"
button2Label: "Create"
onButton1Clicked:
{
...
}
onButton2Clicked:
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
我想要的是这样的:当我点击第二个按钮,"创建"时,我想简单地用console.log(arg1,...)显示在listView中每个项目的TextEdit中写的名为"seriesTextEdit"的内容.例如,如果我的列表视图包含10个项目,并且用户在所有项目的所有TexTedit中插入了一个值,那么我该如何访问这些数据?非常感谢,Giammarco
ListView可能是一个错误的类,因为它会销毁不在可见区域中的项目并创建可见的新项目.如果您不希望使用Repeater.
无论如何,您可以使用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);
}
Run Code Online (Sandbox Code Playgroud)