0

我在 StackView QML 类型中有一些 3 个组件,我可以使用push()和更改视图pop()。再往下,当我 push() 或 pop() 到那个 UI 时,我想根据用户配置更新 UI(Component)。通过文档,我发现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
    {
    }
}
4

2 回答 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"
    }
}
于 2017-12-21T15:25:27.933 回答
0

使用StackView.onStatusChanged:into components 应该对您有所帮助,但要小心 - 您无法定义您的组件是否被弹出或另一个组件被 StackView.status 推到它上方(至少大约一年前是这样,我无法检查它现在的情况)。您可以在我的旧问题的小讨论中找到一些细节

于 2017-12-21T15:51:03.877 回答