QT/QML 从主窗口重新打开新窗口

Posted

技术标签:

【中文标题】QT/QML 从主窗口重新打开新窗口【英文标题】:QT/QML reopen New Window From Main Window 【发布时间】:2017-06-15 09:32:54 【问题描述】:

我开始研究 QT/QML,PyQt 桌面应用程序。我对 Qt/QML 有一些基本的了解。

我正在尝试修改一个已存在的桌面应用程序。

这里是 我在应用程序的主窗口中添加了一个按钮来打开另一个窗口。

ma​​in.qml

Button 
    text: "Open Window"

    Loader id: pageLoader 

    onClicked: 
        console.log("Clicked")
        pageLoader.source = "testing.qml"
    

testing.qml

import QtQuick 2.2
import QtQuick.Window 2.2

Window 
    id: win1
    width: 1000;
    height: 1000;
    visible: true;
    visibility: "Maximized"
    color: "#363636";
    title: "First Window";
    Text 
        anchors.centerIn: parent
        text: "Page 1"
    
    MouseArea
        anchors.fill: parent;
        onClicked: pageLoader.source="";
    

当我点击按钮时,新窗口成功打开。但是当我关闭新窗口并试图重新打开时,它不会打开。它只是打印“Clicked”。

【问题讨论】:

我从您的示例中删除了一些杂乱无章的内容,因此您的示例开箱即用。请咨询help 以查找最小、完整和可验证示例的要求。 【参考方案1】:

您的问题是,只有当您通过单击其中包含的MouseArea 关闭窗口时才清除Loaders 源。如果你用x-按钮关闭它,你不会清除它,所以加载器保持活动状态并且源保持不变。

要解决这个问题,您可以确保源更改,当您单击打开-Button 时,通过让

onClicked: 
    pageLoader.source = ""  // Clearing first
    pageLoader.source = "testing.qml" // Setting again

或使用Windows closing()-信号

onClosing: pageLoader.source = ""

【讨论】:

成功了..!!谢谢:) 如果正确,请不要忘记接受它作为正确答案。如果有帮助,请点赞。如果有什么遗漏,请在评论中指出,以便改进答案。这将确保网站的质量。

以上是关于QT/QML 从主窗口重新打开新窗口的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 pyqt5 和 qt 设计器从主对话框窗口打开第二个窗口

如何chrome打开新窗口就最大化?

window.location.href打开新窗口前面的页面

完成后销毁 QT QML 窗口

IE无法打开新窗口怎么办?

js 页面跳转 新窗口打开