这样操作的原因:ListModel代理访问只能通过属性,不能直接访问内容的成员和函数
MyList.qml
import QtQuick 2.14
Item {
ListModel {
id: myModel
}
ListView {
id: view
width: parent.width
height: parent.height - btn.height
anchors.left: parent.left
anchors.top: parent.top
interactive: false
model: myModel
delegate: Component {
UserItem {
id: user
width: view.width
height: 30
property string textname: name
Text {
anchors.left: parent.left
anchors.leftMargin: 10
anchors.verticalCenter: parent.verticalCenter
verticalAlignment: Text.AlignVCenter
text: user.textname
}
MouseArea {
anchors.fill: parent
onClicked: {
parent.ListView.view.currentIndex = index
}
}
}
}
}
Rectangle {
id: btn
width: parent.width
height: 30
anchors.left: parent.left
anchors.bottom: parent.bottom
color: "blue"
MouseArea {
id: btn_mouse
anchors.fill: parent
onClicked: {
console.log(view.count) //2
console.log(view.contentItem.children.length) //3
for(var i=0; i< view.contentItem.children.length; i++){
if(view.contentItem.children[i] instanceof UserItem){
console.log(view.contentItem.children[i].textname)
var obj = view.contentItem.children[i];
obj.doSomeThing();
obj.grabToImage(function(result) {
var file_path = qml_jsonManager.captureMillisPath();
console.log(file_path);
console.log(result.saveToFile(file_path));
});
}
}
}
}
}
Component.onCompleted: {
myModel.append({name: qsTr("111111111111111111111111111")});
myModel.append({name: qsTr("222222222222222222222222222")});
}
}
UserItem.qml
import QtQuick 2.0
Item {
function doSomeThing() {
console.log("doSomeThing !!!!!!!!!!!!!!!!!!!!!!!");
}
}