【问题标题】:How to hide a QML Window when opening a other QML Window打开另一个 QML 窗口时如何隐藏 QML 窗口
【发布时间】:2025-12-25 06:30:11
【问题描述】:

我需要在单击按钮时打开另一个 QML 窗口时隐藏 QML 窗口,我使用 Loader 打开另一个 QML 窗口,它只隐藏 QML 表单组件而不是 QML 窗口,但我目前使用窗口组件打开QML 窗口

这是我的代码:

Button {
        id: button2
        x: 19
        y: 54
        width: 114
        height: 25
        text: qsTr("DIFF-R")
        style: ButtonStyle {
            background: Rectangle {
                implicitWidth: 10
                implicitHeight: 25
                border.width: control.activeFocus ? 2 : 1
                border.color: "#555"
                radius: 10
                gradient: Gradient {
                    GradientStop { position: 0 ; color: control.pressed ? "#ddd" : "#fff" }
                    GradientStop { position: 1 ; color: control.pressed ? "#8ad993" : "#528dc8" }

                }
    }
}
        onClicked:{ 
                    /*pagesource.source="screen2.qml"
            button1.visible="false"
            button2.visible="false"
            text1.visible="false"
            text2.visible="false"
            text3.visible="false"
            text4.visible="false"
            textField1.visible="false"
            textField2.visible="false"
            textField3.visible="false"
            image1.visible="false"*/ 
            var component = Qt.createComponent("screen2.qml")
            var window    = component.createObject(root)
            window.show("screen2.qml") }

以上代码仅在单击按钮时导航 QML 窗口,而我需要隐藏 QML 窗口。

【问题讨论】:

  • @folibis 如果我使用 Window.visible="false",第一次可以正常工作,但之后就无法正常工作了。

标签: qml qt5.3 qt5.4 qqmlcomponent


【解决方案1】:

当您隐藏主窗口时,我看不到任何代码。请阅读this article,因为您的代码没有说明问题。

这是一个小例子,当弹出窗口显示时主窗口隐藏。可能对你有用。

Window {
    id: mainWindow
    title: "Main window"
    width: 600
    height: 600
    visible: true
    flags: Qt.Dialog
    modality: Qt.ApplicationModal

    Component {
        id:  popupWindow
        Window {
            title: "Popup window"
            width: 400
            height: 400
            visible: true
            flags: Qt.Dialog
            modality: Qt.ApplicationModal
            Text {
                anchors.centerIn: parent
                text: "Close me to show main window"
            }
        }
    }

    Button {
        anchors.centerIn: parent
        text: "Show popup window"
        onClicked: {
            var window = popupWindow.createObject(mainWindow);
            mainWindow.hide();
            conn.target = window;
        }
    }

    Connections {
        id: conn
        onVisibleChanged: {
            mainWindow.show();
        }
    }
}

【讨论】:

  • 我为 arm 处理器(覆盆子)编写代码。我不能支持很多窗口。