Как закрыть окно в коде QML / Javascript (с включенным кодом C ++)? - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть окно QML, объявленное, например, в MyWindow.qml:

Item {
    id: thisWindow
    width: 500
    height: 140
    ... sub-items that declare the UI of the window ...

и класс C ++, который создает экземпляр этого QML:

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

Как закрыть это окно изJavascript / QML-код?Я не могу вызвать thisWindow.close (), потому что это просто тип элемента в иерархии.

Ответы [ 3 ]

0 голосов
/ 17 декабря 2018

Используйте глобальный объект Qt и следуйте инструкциям здесь: http://doc.qt.io/qt-5/qml-qtqml-qt.html#quit-method

0 голосов
/ 18 декабря 2018

Вам не нужен с ++ для этого.Вы можете сделать это с помощью window присоединенного свойства прямо из QML.

//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()
     }
}
0 голосов
/ 17 декабря 2018

Самый простой вариант - экспортировать QQuickView в .qml с setContextProperty():

#include <QQmlEngine>
#include <QQmlContext>

// ...
{
    engine()->rootContext()->setContextProperty("view", this);
    setSource(QUrl("qrc:/MyWindow.qml"));
    setFlags(Qt::WindowFlags(Qt::Popup));
}

А затем в QML вы можете использовать:

view.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...