I am new to QML, I have a Component which is pushed on a StackView. I'd like from this component to access the StackView containing it.
Here is a code that works
import QtQuick 2.11
import QtQuick.Controls.2.2
ApplicationWindow {
id: window
StackView {
id: stackView
initialItem: test1
anchors.fill: parent
}
Component {
id: test1
Button {
text: "Go to test2"
onClicked: stackView.push(test2)
}
}
Component {
id: test2
Button {
text: "Back to test1"
onClicked: stackView.pop()
}
}
}
However, I'd like to avoid accessing stackView
by its id
Stack.view
seems to be what I'm looking for, but I have no idea how to use it. I tried all of the following (replacing Button
s' onClicked
) :
Stack.view.push(test2)
view.push(test2)
test1.Stack.view.push(test2)
test1.view.push(test2)
None of these work.
Am I misunderstanding something ? How am I supposed to use Stack.view
?
Edit : this question looks really close to mine : Access QML StackView from a control
I could indeed use a property to keep a reference to my StackView
, but I would still like to avoid that if possible.
The accepted answer says that root.StackView.view.pop()
is the correct method. I assume root
is the Page
's id
from this post, so I tried test1.StackView.view.push(test2)
, but this still doesn't work. (Also tried with root
, but it's not better)