Reputation: 63
I'm making a QML app. I've defined a main.qml where i've added a StackView. I've loaded a page on this "main" stackview but from the main.qml. Now I need to push something to this stackview but from another file (to be more specific, from one of the pages I've previously pushed on this stackview).
This is what I've made.
main.qml
ApplicationWindow {
id: window
visible: true
width: 320
height: 568
title: qsTr("Stack")
header: ToolBar {
contentHeight: toolButton.implicitHeight
ToolButton {
id: toolButton
text: stackView.depth > 1 ? "\u25C0" : ""
font.pixelSize: Qt.application.font.pixelSize * 1.6
onClicked: {
if ( stackView.depth > 1 ) {
stackView.pop( )
} else {
...
}
}
}
Label {
text: stackView.currentItem.title
anchors.centerIn: parent
}
}
StackView {
id: stackView
initialItem: "ListaInventarios.qml"
anchors.fill: parent
}
}
ListaInventarios.qml
Page {
width: parent.width
height: parent.height
id: listaInventarios
title: "Inventarios"
ListView {
id: lvInventarios
anchors.fill: parent
model: ListModel { ... }
delegate: Component {
Item {
width: parent.width
height: 40
Column {
Text { text: nombreInventario; font.bold: true }
Text { text: fuenteDatos }
}
MouseArea {
anchors.fill: parent
onClicked: { lvInventarios.currentIndex = index }
onDoubleClicked: {
// HERE I NEED TO PUSH A NEW PAGE ON "stackView" (from main.qml)
}
}
}
}
highlight: Rectangle {
color: "lightblue"
radius: 5
}
focus: true
}
footer: ToolBar {
id: barraInferior
contentHeight: toolButton.implicitHeight
Row {
anchors {
horizontalCenter: parent.horizontalCenter
verticalCenter: parent.verticalCenter
}
ToolButton {
text: "Nuevo"
width: window.width / 2
onClicked: {
...
}
}
ToolButton {
text: "Borrar"
width: window.width / 2
onClicked: {
...
}
}
}
}
}
Upvotes: 1
Views: 564
Reputation: 24416
Use the attached StackView
API:
onDoubleClicked: {
listaInventarios.StackView.view.push("Foo.qml")
}
Note that you need to prefix the call with the item that's managed by the StackView
: listaInventarios
.
Upvotes: 1