QML在delegate9控制其他ListView
时间: 2023-12-03 18:34:37 浏览: 66
可以使用QML中的信号和槽机制来控制其他的ListView。在delegate中可以使用信号来向父级组件发出消息,然后在父级组件中通过槽函数来控制其他的ListView。
以下是一个例子:
```
ListView {
id: listView1
model: ListModel {
ListElement { name: "Item 1" }
ListElement { name: "Item 2" }
ListElement { name: "Item 3" }
}
delegate: Rectangle {
width: listView1.width
height: 50
color: "lightblue"
border.width: 1
border.color: "black"
Text {
text: name
anchors.centerIn: parent
}
MouseArea {
anchors.fill: parent
onClicked: {
listView1.selection.clear()
listView1.currentIndex = index
listView1.selection.select(index)
listView2.currentIndex = index // 控制另一个ListView
}
}
}
}
ListView {
id: listView2
model: ListModel {
ListElement { name: "Item 1" }
ListElement { name: "Item 2" }
ListElement { name: "Item 3" }
}
delegate: Rectangle {
width: listView2.width
height: 50
color: listView2.currentIndex === index ? "pink" : "white"
border.width: 1
border.color: "black"
Text {
text: name
anchors.centerIn: parent
}
}
}
```
在上面的例子中,当在第一个ListView中点击一个项时,会通过信号通知父级组件,然后在父级组件中通过槽函数来控制另一个ListView的选中项。在第二个ListView中,通过currentIndex来控制选中项的颜色。
阅读全文