如何获取列表视图中的数据。我有一个QML列表视图,该视图在delagate内部有一个Textfield。我应该如何在listview的delagate内部的textfield中调用文本?
ListView {
id:listview
model: 10
delegate: Component{
id:component
Item{
id:item
Textfield{
id:textfield
}
}
}
Button{
onClicked:{
for(var i=0 ; i<listview.model; i++){
myfunc( ) <---- textfield at index i text to be put here
}
}
}
按下按钮后,我想在列表视图的特定索引或示例代码中的所有文本字段中获取数据。
答案 0 :(得分:1)
您的方法不正确,您必须通过模型访问数据,但是您的模型是只读的,也就是说,它将永远不会被修改,而必须使用ListModel或QAbstractItemModel。
import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 1.4
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
ListModel{
id: mymodel
Component.onCompleted: {
for(var i=0; i< 10; ++i){
mymodel.append({"text": ""})
}
}
}
ListView {
id:listview
height: contentHeight
model: mymodel
delegate: TextField{
id:textfield
onTextChanged: model.text = text
}
}
Button{
text: "Press me"
anchors.top: listview.bottom
onClicked:{
for(var i=0 ; i<mymodel.count; i++){
console.log(mymodel.get(i).text) // <---- textfield at index i text to be put here
}
}
}
}