我在StackView QML类型中有3个组件,我可以使用push()
和pop()
更改视图。再往下,我想在将push()或pop()推送到该UI时,根据用户配置更新UI(组件)。通过文档,我发现Stack.status
在这种情况下很有趣,但不知道如何使用它。
任何人都能举一些关于它的例子吗?
以下是我将屏幕加载到堆栈视图并导航的代码:
StackView {
id: stackView
visible: false
// rotation: 180
anchors.fill: parent
initialItem: componentHome
Component.onCompleted:
{
}
}
Component
{
id: componentHome
Home
{
//This is how I traverse the screens
onMenuClicked:
{
console.log("opening "+name+" screen")
if(name === "settings")
{
//Here, for eg. how to update UI in Settings screen before pushing it?
stackView.push(componentSettings)
}
}
}
}
Component
{
id: componentSettings
Settings
{
}
}
Component
{
id: componentPlay
Play
{
}
}
答案 0 :(得分:0)
我会用以下方式做到这一点:
import QtQuick.Controls 2.1
StackView {
id: stack
anchors.fill: parent
initialItem: page1
}
Button {
text: "add page"
onClicked: {
var page = stack.push(page2, {color: "red"});
//page.color = "red"; // - that also should work
}
}
Component {
id: page1
Rectangle {
color: "black"
}
}
Component {
id: page2
Rectangle {
color: "black"
}
}
答案 1 :(得分:0)
在组件中使用StackView.onStatusChanged:
可以帮助你,但要小心 - 你无法定义组件弹出或StackView.status将其他组件推到它上面(至少大约一年前,我可以现在检查它是怎么回事。您可以在my old question