У вас есть MouseArea
в вашем вертикальном представлении списка, которое скрывает все события в вашем горизонтальном ListView. В QML рекомендуется включать все компоненты MouseArea
внутри делегата.
Кроме того, вместо использования метода indexAt(mouseX,mouseY)
используйте свойство index
, доступное для всех делегатов.
Чтобы распространить событие мыши от делегата списка MouseArea
до делегата списка2 MouseArea
, используйте mouse.accepted = false
Item {
id:main
width: 360
height: 640
Component{
id:myDelegate
ListView{
id:list2
spacing: 5
width:list.width
height:list.height/3
interactive: true
orientation: ListView.Horizontal
model: ListModel {
ListElement {
name: "Bill Smith"
number: "555 3264"
}
ListElement {
name: "John Brown"
number: "555 8426"
}
ListElement {
name: "Sam Wise"
number: "555 0473"
}
ListElement {
name: "Sam Wise"
number: "555 0473"
}
ListElement {
name: "Sam Wise"
number: "555 0473"
}
}
delegate: Text {
text:name
width: main.width/3}
focus: true
MouseArea {
anchors.fill: parent
onClicked: {
list2.currentIndex = index;
}
}
}
MouseArea {
anchors.fill: parent
onClicked: {
list2.ListView.view.currentIndex = index;
mouse.accepted = false;
}
}
}
ListView {
id: list
clip: true
spacing: 5
anchors.fill: parent
orientation: ListView.Vertical
model: Model{}
delegate:myDelegate
focus: true
}
}