Reputation: 1121
I have listview with a nested listview in it in qml, how can i get index of parent listview index in nested listview delegate?
Code sample:
ListView {
id: listView
anchors.fill: parent
delegate: delegate
model: myModel
}
Component {
id: delegate
Item {
id: recipe
width: listView.width
height: 120
Column {
// some text fields
ListView {
id: listView1
width: listView.width
height: 50
delegate: nextLevelDelegate
model: nextLevelList
}
}
}
}
Component {
id: nextLevelDelegate
Item{
width: listView1.width
height: 20
Rectangle {
id: background2
x: 2; y: 2; width: parent.width - x*2; height: parent.height - y*2
color: "lightgray"
border.color: "gray"
radius: 5
}
Text {
anchors.fill: parent
id:nextLevelButton
horizontalAlignment:Text.AlignHCenter
text: modelData
}
MouseArea
{
anchors.fill: parent
id: mouseArea
onClicked: {
window.buttonPressed(nextLevelButton.text,listView.currentIndex);//I need parent index here for calling c++ method with it
}
}
}
}
Upvotes: 2
Views: 938
Reputation: 147
This worked for me:
import QtQuick 2.15
import QtQuick.Window 2.15
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
ListModel {
id: listModelOne
ListElement {vertical: 8}
ListElement {vertical: 9}
}
ListModel {
id: listModelTwo
ListElement {horiz: 0}
ListElement {horiz: 1}
}
ListView{
id:verticalListView
anchors.fill:parent
model:listModelOne
delegate: Item{
id:vert_del
width: 200
height: 100
ListView{
property int parentIndex: index
id:horizontalListView
width:verticalListView.width
height:100
orientation: ListView.Horizontal
model:listModelTwo
delegate: Item{
width:50
height:50
Text{
text:horiz
MouseArea{
anchors.fill:parent
onClicked: console.debug(horizontalListView.parentIndex)
}
}
}
}
}
}
}
Upvotes: 0
Reputation: 3851
Assign the index of the parent list view to a different property so it won't be shadowed.
ListView {
id: listView1
property int parentIndex: index
width: listView.width
height: 50
delegate: nextLevelDelegate
model: nextLevelList
}
parentIndex
will be available within nextLevelDelegate
as listView1.parentIndex
.
Upvotes: 4