diff --git a/src/layouts/qquickgridlayoutengine_p.h b/src/layouts/qquickgridlayoutengine_p.h index 67b0257bc716394d9efcc3c51c47afc7dd0e367a..29317ffbbb8d89c63c9c6196b324bcb70d14dbe9 100644 --- a/src/layouts/qquickgridlayoutengine_p.h +++ b/src/layouts/qquickgridlayoutengine_p.h @@ -111,8 +111,9 @@ public: void setGeometry(const QRectF &rect) { - m_item->setPosition(rect.topLeft()); - m_item->setSize(rect.size()); + const QRect r(rect.toRect()); + m_item->setPosition(r.topLeft()); + m_item->setSize(r.size()); } QQuickItem *layoutItem() const { return m_item; } diff --git a/tests/auto/controls/data/tst_rowlayout.qml b/tests/auto/controls/data/tst_rowlayout.qml index 1b9573e0c4d17b387f9dabe262ae9eace69ee26c..505b35171b93a74f8866174a70e826e7260c6e44 100644 --- a/tests/auto/controls/data/tst_rowlayout.qml +++ b/tests/auto/controls/data/tst_rowlayout.qml @@ -543,5 +543,36 @@ Item { layout.destroy(); } + + + Component { + id: layout_alignToPixelGrid_Component + RowLayout { + spacing: 2 + Rectangle { + implicitWidth: 10 + implicitHeight: 10 + Layout.alignment: Qt.AlignVCenter + } + Rectangle { + implicitWidth: 10 + implicitHeight: 10 + Layout.alignment: Qt.AlignVCenter + } + } + } + function test_alignToPixelGrid() + { + var layout = layout_alignToPixelGrid_Component.createObject(container) + layout.width = 21 + layout.height = 21 + var r0 = layout.children[0] + compare(r0.x, 0) // 0.0 + compare(r0.y, 6) // 5.5 + var r1 = layout.children[1] + compare(r1.x, 12) // 11.5 + compare(r1.y, 6) // 5.5 + layout.destroy(); + } } }