From: Tobias Koenig Date: Wed, 31 Oct 2012 12:10:28 +0000 (+0100) Subject: Add support for ScrollArea X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=96ca87ea13c089e2560ca865995128e01c36932b;p=konrad%2FDeclarativeWidgets.git Add support for ScrollArea --- diff --git a/declarativeobjects.cpp b/declarativeobjects.cpp index 0bd2bb9..46625d7 100644 --- a/declarativeobjects.cpp +++ b/declarativeobjects.cpp @@ -1570,6 +1570,32 @@ DeclarativeRadioButton::DeclarativeRadioButton(QObject *parent) : DeclarativeWid CUSTOM_METAOBJECT(DeclarativeRadioButton, QRadioButton) +// DeclarativeScrollArea +DeclarativeScrollArea::DeclarativeScrollArea(QObject *parent) : DeclarativeWidgetProxy(parent) +{ + connectAllSignals(m_proxiedObject, this); +} + +void DeclarativeScrollArea::addWidget(QWidget *widget, AbstractDeclarativeObject *declarativeObject) +{ + if (m_proxiedObject->widget()) { + qmlInfo(declarativeObject) << "Can not add multiple Widgets to ScrollArea"; + } else { + m_proxiedObject->setWidget(widget); + } + + m_children.append(declarativeObject); +} + +void DeclarativeScrollArea::setLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject) +{ + Q_UNUSED(layout); + Q_UNUSED(declarativeObject); + qmlInfo(this) << "Can not add Layout to ScrollArea"; +} + +CUSTOM_METAOBJECT(DeclarativeScrollArea, QScrollArea) + // DeclarativeScrollBar DeclarativeScrollBar::DeclarativeScrollBar(QObject *parent) : DeclarativeWidgetProxy(parent) { diff --git a/declarativeobjects_p.h b/declarativeobjects_p.h index 497c242..88ad740 100644 --- a/declarativeobjects_p.h +++ b/declarativeobjects_p.h @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -923,6 +924,18 @@ class DeclarativeRadioButton : public DeclarativeWidgetProxy DeclarativeRadioButton(QObject *parent = 0); }; +class DeclarativeScrollArea : public DeclarativeWidgetProxy +{ + DECLARATIVE_OBJECT + + public: + DeclarativeScrollArea(QObject *parent = 0); + + protected: + virtual void addWidget(QWidget *widget, AbstractDeclarativeObject *declarativeObject); + virtual void setLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject); +}; + class DeclarativeScrollBar : public DeclarativeWidgetProxy { DECLARATIVE_OBJECT diff --git a/declarativewidgetdocument.cpp b/declarativewidgetdocument.cpp index 3099c3e..ca51bcc 100644 --- a/declarativewidgetdocument.cpp +++ b/declarativewidgetdocument.cpp @@ -82,6 +82,7 @@ DeclarativeWidgetDocument::DeclarativeWidgetDocument(const QUrl &url, QObject *p qmlRegisterType("QtGui", 1, 0, "ProgressBar"); qmlRegisterType("QtGui", 1, 0, "PushButton"); qmlRegisterType("QtGui", 1, 0, "RadioButton"); + qmlRegisterType("QtGui", 1, 0, "ScrollArea"); qmlRegisterType("QtGui", 1, 0, "ScrollBar"); qmlRegisterType("QtGui", 1, 0, "Slider"); qmlRegisterType("QtGui", 1, 0, "SpinBox"); diff --git a/gallery.qml b/gallery.qml index 954c500..5f54a92 100644 --- a/gallery.qml +++ b/gallery.qml @@ -63,6 +63,11 @@ TabWidget { minimumWidth: 100 minimumHeight: 100 } + ScrollArea { + Widget { + size: Qt.size(800, 800) + } + } Frame { frameShape: Frame.Panel frameShadow: Frame.Sunken diff --git a/qwidgets.list b/qwidgets.list index ea9e820..cfb25f6 100644 --- a/qwidgets.list +++ b/qwidgets.list @@ -16,7 +16,6 @@ qlistwidget.h qmdiarea.h qmdisubwindow.h qprintpreviewwidget.h -qscrollarea.h qsplashscreen.h qsplitter.h qtabbar.h