summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/kernel/qgridlayout
diff options
context:
space:
mode:
authorThorbjørn Lund Martsum <tmartsum@gmail.com>2012-09-03 06:35:39 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-21 23:17:55 +0200
commit42d681f9cfc984046a93b9efe19903d46ac68bb1 (patch)
tree0a93a177458dc661b9ceb200f8fa21250b6b601f /tests/auto/widgets/kernel/qgridlayout
parente327ba191df56f3315a004d7650d5f1080f12acb (diff)
Add widget replace function to QLayout
Sometimes it is nice to be able to replace a widget in a layout. Change-Id: I23a6a65e417e94d53bc48639503db1a142bc3f10 Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Diffstat (limited to 'tests/auto/widgets/kernel/qgridlayout')
-rw-r--r--tests/auto/widgets/kernel/qgridlayout/tst_qgridlayout.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/auto/widgets/kernel/qgridlayout/tst_qgridlayout.cpp b/tests/auto/widgets/kernel/qgridlayout/tst_qgridlayout.cpp
index 10c759da5e..e067b071e7 100644
--- a/tests/auto/widgets/kernel/qgridlayout/tst_qgridlayout.cpp
+++ b/tests/auto/widgets/kernel/qgridlayout/tst_qgridlayout.cpp
@@ -101,6 +101,7 @@ private slots:
void distributeMultiCell();
void taskQTBUG_27420_takeAtShouldUnparentLayout();
+ void replaceWidget();
private:
QWidget *testWidget;
@@ -1656,5 +1657,49 @@ void tst_QGridLayout::taskQTBUG_27420_takeAtShouldUnparentLayout()
QVERIFY(!inner.isNull());
}
+void tst_QGridLayout::replaceWidget()
+{
+ QWidget wdg;
+ QGridLayout *l = new QGridLayout();
+ const int itemCount = 9;
+ QLabel *labels[itemCount];
+
+ // setup layout
+ for (int n = 0; n < itemCount; ++n) {
+ int x = n % 3;
+ int y = n / 3;
+ labels[n] = new QLabel(QString("label %1").arg(n));
+ Qt::Alignment align = (n % 3 ? Qt::AlignLeft : Qt::AlignRight);
+ l->addWidget(labels[n], x * 3, y * 3, (n % 2) + 1, (n + 1) % 2 + 1, align);
+ }
+ wdg.setLayout(l);
+
+ // iterate and replace
+ for (int n = 0; n < itemCount; n += 2) {
+ int i = l->indexOf(labels[n]);
+ int fromRow, fromCol, fromRowSpan, fromColSpan;
+ l->getItemPosition(i, &fromRow, &fromCol, &fromRowSpan, &fromColSpan);
+ Qt::Alignment fromAlign = l->itemAt(i)->alignment();
+ // do replace
+ QPushButton *pb = new QPushButton("replaced");
+ QLayoutItem *olditem = l->replaceWidget(labels[n], pb);
+ // verify
+ QCOMPARE(i, l->indexOf(pb));
+ QVERIFY(olditem != 0);
+ QCOMPARE(l->indexOf(labels[n]), -1);
+ int toRow, toCol, toRowSpan, toColSpan;
+ l->getItemPosition(i, &toRow, &toCol, &toRowSpan, &toColSpan);
+ QCOMPARE(fromRow, toRow);
+ QCOMPARE(fromCol, toCol);
+ QCOMPARE(fromRowSpan, toRowSpan);
+ QCOMPARE(fromColSpan, toColSpan);
+ Qt::Alignment toAlign = l->itemAt(i)->alignment();
+ QCOMPARE(fromAlign, toAlign);
+ // clean up
+ olditem->widget()->deleteLater();
+ delete olditem;
+ }
+}
+
QTEST_MAIN(tst_QGridLayout)
#include "tst_qgridlayout.moc"