From aa353b3d0ff3c69a8a8873dad62b53cfac9cbb82 Mon Sep 17 00:00:00 2001 From: Tobias Koenig Date: Wed, 17 Oct 2012 19:20:46 +0200 Subject: [PATCH] Make the declarative engine accessible This allows us to use Qt.quit() inside the QML --- declarativewidgetdocument.cpp | 5 +++++ declarativewidgetdocument.h | 4 ++++ editor.qml | 1 + main.cpp | 4 ++++ 4 files changed, 14 insertions(+), 0 deletions(-) diff --git a/declarativewidgetdocument.cpp b/declarativewidgetdocument.cpp index db642db..28f5432 100644 --- a/declarativewidgetdocument.cpp +++ b/declarativewidgetdocument.cpp @@ -77,6 +77,11 @@ void DeclarativeWidgetDocument::setContextProperty(const QString &name, QObject d->m_engine->rootContext()->setContextProperty(name, object); } +QDeclarativeEngine* DeclarativeWidgetDocument::engine() const +{ + return d->m_engine; +} + QWidget* DeclarativeWidgetDocument::createWidget() { QObject *object = d->m_component->create(); diff --git a/declarativewidgetdocument.h b/declarativewidgetdocument.h index 2ad2152..e156df6 100644 --- a/declarativewidgetdocument.h +++ b/declarativewidgetdocument.h @@ -4,6 +4,8 @@ #include #include +class QDeclarativeEngine; + class DeclarativeWidgetDocument : public QObject { Q_OBJECT @@ -15,6 +17,8 @@ class DeclarativeWidgetDocument : public QObject void setContextProperty(const QString &name, const QVariant &value); void setContextProperty(const QString &name, QObject *object); + QDeclarativeEngine* engine() const; + template T* create() { diff --git a/editor.qml b/editor.qml index b7396c2..87aab50 100644 --- a/editor.qml +++ b/editor.qml @@ -14,6 +14,7 @@ MainWindow { Action { text: "Close" + onTriggered: Qt.quit() } } diff --git a/main.cpp b/main.cpp index 311d4ea..0ea10e3 100644 --- a/main.cpp +++ b/main.cpp @@ -3,9 +3,11 @@ #include #include #include +#include #include #include #include + int main(int argc, char **argv) { QApplication app(argc, argv); @@ -24,6 +26,8 @@ int main(int argc, char **argv) const QUrl documentUrl = QUrl::fromLocalFile(qmlFile.absoluteFilePath()); DeclarativeWidgetDocument document(documentUrl); + QObject::connect(document.engine(), SIGNAL(quit()), &app, SLOT(quit())); + document.setContextProperty("_timer", &timer); QWidget *widget = document.create(); -- 1.7.2.5