diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-06-09 22:54:39 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-06-09 21:04:55 +0000 |
commit | 356ed5addc48663174019b1e40f970b727567166 (patch) | |
tree | d5c61d0fd923e125fd3567ac7c42062140ad4ffc /src/controls | |
parent | 375cd1cadb5aaa50d76490f0fecb401620fb5677 (diff) |
Container: resize the content automatically
Change-Id: If7964b64b6f78fc77e1095d69658e27bcb89a6f8
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
Diffstat (limited to 'src/controls')
-rw-r--r-- | src/controls/qquickcontainer.cpp | 25 | ||||
-rw-r--r-- | src/controls/qquickcontainer_p.h | 3 | ||||
-rw-r--r-- | src/controls/qquickcontainer_p_p.h | 4 | ||||
-rw-r--r-- | src/controls/qquicktabview.cpp | 2 |
4 files changed, 33 insertions, 1 deletions
diff --git a/src/controls/qquickcontainer.cpp b/src/controls/qquickcontainer.cpp index 456dd6c8..4c31e12e 100644 --- a/src/controls/qquickcontainer.cpp +++ b/src/controls/qquickcontainer.cpp @@ -53,6 +53,15 @@ QQuickContainerPrivate::QQuickContainerPrivate() : { } +void QQuickContainerPrivate::resizeContent() +{ + Q_Q(QQuickContainer); + if (contentItem) { + contentItem->setPosition(QPointF(q->leftPadding(), q->topPadding())); + contentItem->setSize(QSizeF(q->availableWidth(), q->availableHeight())); + } +} + QQuickContainer::QQuickContainer(QQuickItem *parent) : QQuickControl(*(new QQuickContainerPrivate), parent) { @@ -120,11 +129,27 @@ void QQuickContainer::setContentItem(QQuickItem *item) if (item) { if (!item->parentItem()) item->setParentItem(this); + if (isComponentComplete()) + d->resizeContent(); } emit contentItemChanged(); } } +void QQuickContainer::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) +{ + Q_D(QQuickContainer); + QQuickControl::geometryChanged(newGeometry, oldGeometry); + d->resizeContent(); +} + +void QQuickContainer::paddingChange() +{ + Q_D(QQuickContainer); + QQuickControl::paddingChange(); + d->resizeContent(); +} + void QQuickContainer::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) { Q_UNUSED(newItem); diff --git a/src/controls/qquickcontainer_p.h b/src/controls/qquickcontainer_p.h index 6e3e224a..783f79fa 100644 --- a/src/controls/qquickcontainer_p.h +++ b/src/controls/qquickcontainer_p.h @@ -81,6 +81,9 @@ Q_SIGNALS: protected: QQuickContainer(QQuickContainerPrivate &dd, QQuickItem *parent); + void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE; + void paddingChange() Q_DECL_OVERRIDE; + virtual void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem); private: diff --git a/src/controls/qquickcontainer_p_p.h b/src/controls/qquickcontainer_p_p.h index c0b52cec..538ecc3c 100644 --- a/src/controls/qquickcontainer_p_p.h +++ b/src/controls/qquickcontainer_p_p.h @@ -54,9 +54,13 @@ QT_BEGIN_NAMESPACE class Q_QUICKCONTROLS_EXPORT QQuickContainerPrivate : public QQuickControlPrivate { + Q_DECLARE_PUBLIC(QQuickContainer) + public: QQuickContainerPrivate(); + void resizeContent(); + qreal contentWidth; qreal contentHeight; QQuickItem *contentItem; diff --git a/src/controls/qquicktabview.cpp b/src/controls/qquicktabview.cpp index 3a79a725..4b2485b0 100644 --- a/src/controls/qquicktabview.cpp +++ b/src/controls/qquicktabview.cpp @@ -130,7 +130,7 @@ void QQuickTabView::setTabBar(QQuickTabBar *bar) void QQuickTabView::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) { Q_D(QQuickTabView); - QQuickControl::geometryChanged(newGeometry, oldGeometry); + QQuickContainer::geometryChanged(newGeometry, oldGeometry); if (d->bar) { QQuickItemPrivate *p = QQuickItemPrivate::get(d->bar); if (!p->widthValid) { |