如何使用QML StackView的status属性?

问题描述 投票:0回答:2

我在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
    {
    }
}
qt qml stackview
2个回答
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"
    }
}

0
投票

StackView.onStatusChanged:用于组件应该可以帮助你,但要小心 - 你无法定义组件弹出或StackView.status将其他组件推到它上面(至少是大约一年前,我无法检查它是如何正确的现在)。您可以在my old question的小型讨论中找到一些细节

© www.soinside.com 2019 - 2024. All rights reserved.