【问题标题】:QT/QML reopen New Window From Main WindowQT/QML 从主窗口重新打开新窗口
【发布时间】: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 以查找最小、完整和可验证示例的要求。

标签: python qt qml pyqt5 qtquick2


【解决方案1】:

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

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

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

或使用Windows closing()-信号

onClosing: pageLoader.source = ""

【讨论】:

  • 成功了..!!谢谢:)
  • 如果正确,请不要忘记接受它作为正确答案。如果有帮助,请点赞。如果有什么遗漏,请在评论中指出,以便改进答案。这将确保网站的质量。
猜你喜欢
  • 2013-08-02
  • 1970-01-01
  • 2019-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多