完成后销毁 QT QML 窗口
Posted
技术标签:
【中文标题】完成后销毁 QT QML 窗口【英文标题】:Destroy QT QML windows once done 【发布时间】:2018-12-08 15:37:25 【问题描述】:QT QML 的新手,很抱歉,如果它只是一个非常简单的问题。
我有一段简单的代码来演示 WebEngine Qt Quick 示例。
/* runtime.qml*/
import QtQuick 2.1
import QtQuick.Controls 1.1
import QtWebEngine 1.1
ApplicationWindow
width: 1080
height: 1488
visible: true
flags: Qt.WindowFullScreen | Qt.FramelessWindowHint
WebEngineView
url: "http://www.qt.io"
anchors.fill: parent
它只是显示一个网页并由以下脚本调用:
#!/bin/sh
exec /usr/bin/qt5/qmlscene "$1" runtime.qml
当点击放置在某个“其他窗口”上的小部件时触发此脚本
现在,我希望当有人返回到触发脚本的“其他窗口”时销毁由 runtime.qml 创建的表面。
【问题讨论】:
您必须弄清楚这些其他窗口是什么。Window
具有 close()
方法,因此您可以在失去焦点或其他情况时关闭它。
【参考方案1】:
Qt.quit()
可以解决问题:
MouseArea
anchors.fill: parent
onClicked:
Qt.quit()
您的问题还不够清楚,您可能也需要Timer
,您是使用Loader
来处理runtime.qml 还是加载它?
或者您可能希望查看可以打开或关闭的Popup,而不是使用 Windows。
【讨论】:
【参考方案2】:您可以使用关闭按钮来关闭窗口,如下所示:
Image
id: quitButton
width: 50
height: 50
fillMode: Image.PreserveAspectFit
source: mouseAreaQuitButton.containsMouse ?
"../images/titleBar/quit_hover.png" :
"../images/titleBar/quit.png"
MouseArea
id: mouseAreaQuitButton
anchors.fill: parent
hoverEnabled: true
onClicked: Qt.quit()
【讨论】:
以上是关于完成后销毁 QT QML 窗口的主要内容,如果未能解决你的问题,请参考以下文章