如何在 QML/Javascript 代码(涉及 C++ 代码)中关闭窗口?

Jus*_*ter 2 c++ qt qml

我在 MyWindow.qml 中声明了一个 QML 窗口:

Item {
    id: thisWindow
    width: 500
    height: 140
    ... sub-items that declare the UI of the window ...
Run Code Online (Sandbox Code Playgroud)

以及一个实例化该 QML 的 C++ 类:

class MyWindow : public QQuickView
...
MyWindow::MyWindow() {
    setSource(QUrl("qrc:/MyWindow.qml"));
    setFlags(Qt::WindowFlags(Qt::Popup));
}
Run Code Online (Sandbox Code Playgroud)

如何从 Javascript/QML 代码关闭该窗口?我无法调用 thisWindow.close(),因为它只是层次结构中的一个项目类型。

Gre*_*cKo 5

你不需要 C++ 来做到这一点。您可以直接使用 QML 中的window附加属性来完成此操作。

//other imports
import QtQuick.Window 2.2

Item {
    id: thisWindow
    width: 500
    height: 140
    //... sub-items that declare the UI of the window ...
    MouseArea {
        anchors.fill: parent
        onClicked: Window.window.close()
     }
}
Run Code Online (Sandbox Code Playgroud)