Make the declarative engine accessible
authorTobias Koenig <tobias.koenig@kdab.com>
Wed, 17 Oct 2012 17:20:46 +0000 (19:20 +0200)
committerTobias Koenig <tobias.koenig@kdab.com>
Wed, 17 Oct 2012 17:20:46 +0000 (19:20 +0200)
This allows us to use Qt.quit() inside the QML

declarativewidgetdocument.cpp
declarativewidgetdocument.h
editor.qml
main.cpp

index db642db..28f5432 100644 (file)
@@ -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();
index 2ad2152..e156df6 100644 (file)
@@ -4,6 +4,8 @@
 #include <QtCore/QObject>
 #include <QtCore/QUrl>
 
+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 <typename T>
     T* create()
     {
index b7396c2..87aab50 100644 (file)
@@ -14,6 +14,7 @@ MainWindow {
 
       Action {
         text: "Close"
+        onTriggered: Qt.quit()
       }
     }
 
index 311d4ea..0ea10e3 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -3,9 +3,11 @@
 #include <QtCore/QDir>
 #include <QtCore/QFileInfo>
 #include <QtCore/QTimer>
+#include <QtDeclarative/QDeclarativeEngine>
 #include <QtGui/QApplication>
 #include <QtGui/QWidget>
 #include <QDebug>
+
 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<QWidget>();