【发布时间】:2018-06-25 08:56:38
【问题描述】:
我是 QML 的新手,我有一个组件被推送到 StackView 上。我想从这个组件中访问包含它的 StackView。
这是一个有效的代码
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()
}
}
}
但是,我想避免通过其id 访问stackView
Stack.view 似乎是我正在寻找的东西,但我不知道如何使用它。我尝试了以下所有方法(替换 Buttons' onClicked):
Stack.view.push(test2)
view.push(test2)
test1.Stack.view.push(test2)
test1.view.push(test2)
这些都不起作用。
我是不是误会了什么?我应该如何使用Stack.view?
编辑:这个问题看起来和我的很接近:Access QML StackView from a control
我确实可以使用属性来保留对我的StackView 的引用,但如果可能的话,我仍然想避免这种情况。
接受的答案说root.StackView.view.pop() 是正确的方法。我假设root 是这篇文章中的Page 的id,所以我尝试了test1.StackView.view.push(test2),但这仍然不起作用。 (也试过root,但不是更好)
【问题讨论】:
-
您是否也看过这个:stackoverflow.com/questions/41652163/…。第一个答案似乎正是您所需要的。
-
@eyllanesc 确实可能......我没有看到。编辑(实际上是删除再发布,编辑按钮消失了):问题中添加的评论。