From b160a38b7babeb3cb009748a008075ab07926428 Mon Sep 17 00:00:00 2001 From: Paul Olav Tvete Date: Mon, 14 Aug 2017 10:29:53 +0200 Subject: Update layout when QQuickWidget changes size Task-number: QTBUG-47722 Change-Id: I612f89945961a3995878c424bf27dbbedf8375c8 Reviewed-by: Laszlo Agocs --- .../quickwidgets/qquickwidget/tst_qquickwidget.cpp | 37 ++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'tests/auto/quickwidgets') diff --git a/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp b/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp index ee49c9c7ad..537fe99012 100644 --- a/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp +++ b/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp @@ -38,6 +38,9 @@ #include #include +#include +#include + #include class tst_qquickwidget : public QQmlDataTest @@ -51,6 +54,7 @@ private slots: void reparentAfterShow(); void changeGeometry(); void resizemodeitem(); + void layoutSizeChange(); void errors(); void engine(); void readback(); @@ -225,6 +229,39 @@ void tst_qquickwidget::resizemodeitem() QCOMPARE(view->initialSize(), QSize(200, 200)); // initial object size } +void tst_qquickwidget::layoutSizeChange() +{ + QWidget window; + window.resize(400, 400); + + QVBoxLayout *layout = new QVBoxLayout(&window); + layout->setContentsMargins(0,0,0,0); + layout->setSpacing(0); + QScopedPointer view(new QQuickWidget); + layout->addWidget(view.data()); + QLabel *label = new QLabel("Label"); + layout->addWidget(label); + layout->addStretch(1); + + + view->resize(300,300); + view->setResizeMode(QQuickWidget::SizeViewToRootObject); + QCOMPARE(QSize(0,0), view->initialSize()); + view->setSource(testFileUrl("rectangle.qml")); + QQuickItem* item = qobject_cast(view->rootObject()); + QVERIFY(item); + QCOMPARE(item->height(), 200.0); + window.show(); + QVERIFY(QTest::qWaitForWindowExposed(&window, 5000)); + QTRY_COMPARE(view->height(), 200); + QTRY_COMPARE(label->y(), 200); + + item->setSize(QSizeF(100,100)); + QCOMPARE(item->height(), 100.0); + QTRY_COMPARE(view->height(), 100); + QTRY_COMPARE(label->y(), 100); +} + void tst_qquickwidget::errors() { QQuickWidget *view = new QQuickWidget; -- cgit v1.2.3