From bda81c2d48a100ac78cd9600d6e47b941cbe3049 Mon Sep 17 00:00:00 2001 From: Tobias Koenig Date: Wed, 17 Oct 2012 16:31:43 +0200 Subject: [PATCH] Add MainWindow and TextEdit --- declarativeobjects.cpp | 37 +++++++++++++++++++++++++++++++++++++ declarativeobjects_p.h | 25 ++++++++++++++++++++++++- declarativewidgetdocument.cpp | 2 ++ editor.qml | 6 ++++++ 4 files changed, 69 insertions(+), 1 deletions(-) create mode 100644 editor.qml diff --git a/declarativeobjects.cpp b/declarativeobjects.cpp index 670f0c7..928444a 100644 --- a/declarativeobjects.cpp +++ b/declarativeobjects.cpp @@ -182,6 +182,35 @@ DeclarativeLabel::DeclarativeLabel(QObject *parent) : DeclarativeWidgetProxy(parent) +{ + connectAllSignals(m_proxiedObject, this); +} + +void DeclarativeMainWindow::addWidget(QWidget *widget, AbstractDeclarativeObject *declarativeObject) +{ + if (widget) { + if (m_proxiedObject->centralWidget()) { + qmlInfo(this) << "The QMainWindow contains a central widget already"; + return; + } + + m_proxiedObject->setCentralWidget(widget); + } + + m_children.append(declarativeObject); +} + +void DeclarativeMainWindow::setLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject) +{ + Q_UNUSED(layout); + Q_UNUSED(declarativeObject); + qmlInfo(this) << "Can not set a QLayout to a QMainWindow"; +} + +CUSTOM_METAOBJECT(DeclarativeMainWindow, QMainWindow) + // DeclarativePushButton DeclarativePushButton::DeclarativePushButton(QObject *parent) : DeclarativeWidgetProxy(parent) { @@ -279,6 +308,14 @@ TabWidgetTabHeader *DeclarativeTabWidget::qmlAttachedProperties(QObject *object) CUSTOM_METAOBJECT(DeclarativeTabWidget, QTabWidget) +// DeclarativeTextEdit +DeclarativeTextEdit::DeclarativeTextEdit(QObject *parent) : DeclarativeWidgetProxy(parent) +{ + connectAllSignals(m_proxiedObject, this); +} + +CUSTOM_METAOBJECT(DeclarativeTextEdit, QTextEdit) + // DeclarativeWidget DeclarativeWidget::DeclarativeWidget(QObject *parent) : DeclarativeWidgetProxy(parent) { diff --git a/declarativeobjects_p.h b/declarativeobjects_p.h index 01d1f03..a1218be 100644 --- a/declarativeobjects_p.h +++ b/declarativeobjects_p.h @@ -7,9 +7,11 @@ #include #include #include +#include #include #include #include +#include #include #include #include @@ -98,11 +100,12 @@ class DeclarativeWidgetProxy : public DeclarativeObjectProxy if (declarativeObject) { QWidget *widget = qobject_cast(declarativeObject->object()); if (widget) { +/* if (DeclarativeObjectProxy::m_proxiedObject->layout()) { qmlInfo(this) << "Can not add Widget since a Layout is set already"; return; } - +*/ addWidget(widget, declarativeObject); return; } @@ -210,6 +213,18 @@ class DeclarativeLabel : public DeclarativeWidgetProxy DeclarativeLabel(QObject *parent = 0); }; +class DeclarativeMainWindow : public DeclarativeWidgetProxy +{ + DECLARATIVE_OBJECT + + public: + DeclarativeMainWindow(QObject *parent = 0); + + protected: + virtual void addWidget(QWidget *widget, AbstractDeclarativeObject *declarativeObject); + virtual void setLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject); +}; + class DeclarativePushButton : public DeclarativeWidgetProxy { DECLARATIVE_OBJECT @@ -269,6 +284,14 @@ class DeclarativeTabWidget : public DeclarativeWidgetProxy QML_DECLARE_TYPEINFO(DeclarativeTabWidget, QML_HAS_ATTACHED_PROPERTIES) +class DeclarativeTextEdit : public DeclarativeWidgetProxy +{ + DECLARATIVE_OBJECT + + public: + DeclarativeTextEdit(QObject *parent = 0); +}; + class DeclarativeWidget : public DeclarativeWidgetProxy { DECLARATIVE_OBJECT diff --git a/declarativewidgetdocument.cpp b/declarativewidgetdocument.cpp index b9abae9..7475fd3 100644 --- a/declarativewidgetdocument.cpp +++ b/declarativewidgetdocument.cpp @@ -37,10 +37,12 @@ DeclarativeWidgetDocument::DeclarativeWidgetDocument(const QUrl &url, QObject *p qmlRegisterType("QtGui", 1, 0, "CalendarWidget"); qmlRegisterType("QtGui", 1, 0, "CheckBox"); qmlRegisterType("QtGui", 1, 0, "Label"); + qmlRegisterType("QtGui", 1, 0, "MainWindow"); qmlRegisterType("QtGui", 1, 0, "PushButton"); qmlRegisterType("QtGui", 1, 0, "Slider"); qmlRegisterType(); qmlRegisterType("QtGui", 1, 0, "TabWidget"); + qmlRegisterType("QtGui", 1, 0, "TextEdit"); qmlRegisterType("QtGui", 1, 0, "Widget"); d->m_component->loadUrl(d->m_url); diff --git a/editor.qml b/editor.qml new file mode 100644 index 0000000..49452a0 --- /dev/null +++ b/editor.qml @@ -0,0 +1,6 @@ +import QtGui 1.0 + +MainWindow { + TextEdit { + } +} -- 1.7.2.5