From: Tobias Koenig Date: Wed, 17 Oct 2012 17:20:46 +0000 (+0200) Subject: Make the declarative engine accessible X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=aa353b3d0ff3c69a8a8873dad62b53cfac9cbb82;p=web%2Fkonrad%2FDeclarativeWidgets.git Make the declarative engine accessible This allows us to use Qt.quit() inside the QML --- 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();