From: Tobias Koenig Date: Sun, 14 Oct 2012 11:16:37 +0000 (+0200) Subject: Add support for context properties X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=873f2ca843e8a3f6576aa0eb930fb508d361450b;p=konrad%2FDeclarativeWidgets.git Add support for context properties --- diff --git a/declarativewidgetdocument.cpp b/declarativewidgetdocument.cpp index 501df74..272a971 100644 --- a/declarativewidgetdocument.cpp +++ b/declarativewidgetdocument.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include class DeclarativeWidgetDocument::Private @@ -48,6 +49,16 @@ DeclarativeWidgetDocument::~DeclarativeWidgetDocument() delete d; } +void DeclarativeWidgetDocument::setContextProperty(const QString &name, const QVariant &value) +{ + d->m_engine->rootContext()->setContextProperty(name, value); +} + +void DeclarativeWidgetDocument::setContextProperty(const QString &name, QObject *object) +{ + d->m_engine->rootContext()->setContextProperty(name, object); +} + QWidget* DeclarativeWidgetDocument::createWidget() { QObject *object = d->m_component->create(); diff --git a/declarativewidgetdocument.h b/declarativewidgetdocument.h index bd38392..2ad2152 100644 --- a/declarativewidgetdocument.h +++ b/declarativewidgetdocument.h @@ -12,6 +12,9 @@ class DeclarativeWidgetDocument : public QObject DeclarativeWidgetDocument(const QUrl &url, QObject *parent = 0); ~DeclarativeWidgetDocument(); + void setContextProperty(const QString &name, const QVariant &value); + void setContextProperty(const QString &name, QObject *object); + template T* create() { diff --git a/main.cpp b/main.cpp index 3c5ea1a..a52f801 100644 --- a/main.cpp +++ b/main.cpp @@ -1,13 +1,19 @@ #include "declarativewidgetdocument.h" +#include #include -#include +#include int main(int argc, char **argv) { QApplication app(argc, argv); + QTimer timer; + timer.setInterval(1000); + timer.start(); + DeclarativeWidgetDocument document(QUrl("test.qml")); + document.setContextProperty("_timer", &timer); QWidget *widget = document.create(); if (widget) diff --git a/test.qml b/test.qml index 9e2d50a..7923e77 100644 --- a/test.qml +++ b/test.qml @@ -5,8 +5,21 @@ Widget { windowTitle: qsTr("Cool Test App") size: Qt.size(300, 500) + Timer { + id: counter + + interval: 1000 + running: true + repeat: true + + onTriggered: dateLabel.text = Date().toString() + } + VBoxLayout { Label { + id: dateLabel + } + Label { text: "Hallo ASCII-safe Kevin!!!" } Label {