tests/auto/qgridlayout/tst_qgridlayout.cpp
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
equal deleted inserted replaced
2:56cd8111b7f7 3:41300fa6a67c
   266     QWidget leftChild;
   266     QWidget leftChild;
   267     leftChild.setPalette(QPalette(Qt::red));
   267     leftChild.setPalette(QPalette(Qt::red));
   268     leftChild.setMinimumSize(100, 100);
   268     leftChild.setMinimumSize(100, 100);
   269     leftChild.setMaximumSize(200, 200);
   269     leftChild.setMaximumSize(200, 200);
   270     layout.addWidget(&leftChild, 0, 0);
   270     layout.addWidget(&leftChild, 0, 0);
   271     QApplication::processEvents();
   271     QApplication::sendPostedEvents(0, 0);
   272     QCOMPARE(widget.minimumSize(), leftChild.minimumSize());
   272     QCOMPARE(widget.minimumSize(), leftChild.minimumSize());
   273     QCOMPARE(widget.maximumSize(), leftChild.maximumSize());
   273     QCOMPARE(widget.maximumSize(), leftChild.maximumSize());
   274 
   274 
   275     QWidget rightChild;
   275     QWidget rightChild;
   276     rightChild.setPalette(QPalette(Qt::green));
   276     rightChild.setPalette(QPalette(Qt::green));
   277     rightChild.setMinimumSize(100, 100);
   277     rightChild.setMinimumSize(100, 100);
   278     rightChild.setMaximumSize(200, 200);
   278     rightChild.setMaximumSize(200, 200);
   279     layout.addWidget(&rightChild, 0, 2);
   279     layout.addWidget(&rightChild, 0, 2);
   280     QApplication::processEvents();
   280     QApplication::sendPostedEvents(0, 0);
   281 
   281 
   282     QCOMPARE(widget.minimumWidth(),
   282     QCOMPARE(widget.minimumWidth(),
   283              leftChild.minimumWidth() + rightChild.minimumWidth());
   283              leftChild.minimumWidth() + rightChild.minimumWidth());
   284     QCOMPARE(widget.minimumHeight(),
   284     QCOMPARE(widget.minimumHeight(),
   285              qMax(leftChild.minimumHeight(), rightChild.minimumHeight()));
   285              qMax(leftChild.minimumHeight(), rightChild.minimumHeight()));
   291 
   291 
   292     static const int colMin = 100;
   292     static const int colMin = 100;
   293     layout.setColumnMinimumWidth(1, colMin);
   293     layout.setColumnMinimumWidth(1, colMin);
   294     QCOMPARE(layout.columnMinimumWidth(1), colMin);
   294     QCOMPARE(layout.columnMinimumWidth(1), colMin);
   295 
   295 
   296     QApplication::processEvents();
   296     QApplication::sendPostedEvents(0, 0);
   297     QCOMPARE(widget.minimumWidth(),
   297     QCOMPARE(widget.minimumWidth(),
   298              leftChild.minimumWidth() + rightChild.minimumWidth() + colMin);
   298              leftChild.minimumWidth() + rightChild.minimumWidth() + colMin);
   299     QCOMPARE(widget.maximumWidth(),
   299     QCOMPARE(widget.maximumWidth(),
   300              leftChild.maximumWidth() + rightChild.maximumWidth() + colMin);
   300              leftChild.maximumWidth() + rightChild.maximumWidth() + colMin);
   301     QCOMPARE(widget.minimumHeight(),
   301     QCOMPARE(widget.minimumHeight(),
   304              qMax(leftChild.maximumHeight(), rightChild.maximumHeight()));
   304              qMax(leftChild.maximumHeight(), rightChild.maximumHeight()));
   305 
   305 
   306 
   306 
   307 
   307 
   308     layout.setColumnStretch(1,1);
   308     layout.setColumnStretch(1,1);
   309     QApplication::processEvents();
   309     QApplication::sendPostedEvents(0, 0);
   310     QCOMPARE(widget.minimumWidth(),
   310     QCOMPARE(widget.minimumWidth(),
   311              leftChild.minimumWidth() + rightChild.minimumWidth() + colMin);
   311              leftChild.minimumWidth() + rightChild.minimumWidth() + colMin);
   312     QCOMPARE(widget.maximumWidth(), QLAYOUTSIZE_MAX);
   312     QCOMPARE(widget.maximumWidth(), QLAYOUTSIZE_MAX);
   313     QCOMPARE(widget.minimumHeight(),
   313     QCOMPARE(widget.minimumHeight(),
   314              qMax(leftChild.minimumHeight(), rightChild.minimumHeight()));
   314              qMax(leftChild.minimumHeight(), rightChild.minimumHeight()));
   316              qMax(leftChild.maximumHeight(), rightChild.maximumHeight()));
   316              qMax(leftChild.maximumHeight(), rightChild.maximumHeight()));
   317 
   317 
   318 
   318 
   319 
   319 
   320     layout.setColumnStretch(1,0);
   320     layout.setColumnStretch(1,0);
   321     QApplication::processEvents();
   321     QApplication::sendPostedEvents(0, 0);
   322     QCOMPARE(widget.minimumWidth(),
   322     QCOMPARE(widget.minimumWidth(),
   323              leftChild.minimumWidth() + rightChild.minimumWidth() + colMin);
   323              leftChild.minimumWidth() + rightChild.minimumWidth() + colMin);
   324     QCOMPARE(widget.maximumWidth(),
   324     QCOMPARE(widget.maximumWidth(),
   325              leftChild.maximumWidth() + rightChild.maximumWidth() + colMin);
   325              leftChild.maximumWidth() + rightChild.maximumWidth() + colMin);
   326     QCOMPARE(widget.minimumHeight(),
   326     QCOMPARE(widget.minimumHeight(),
   333     layout.setColumnMinimumWidth(1, 0);
   333     layout.setColumnMinimumWidth(1, 0);
   334 
   334 
   335     static const int spacerS = 250;
   335     static const int spacerS = 250;
   336     QSpacerItem *spacer = new QSpacerItem(spacerS, spacerS);
   336     QSpacerItem *spacer = new QSpacerItem(spacerS, spacerS);
   337     layout.addItem(spacer, 0, 1);
   337     layout.addItem(spacer, 0, 1);
   338     QApplication::processEvents();
   338     QApplication::sendPostedEvents(0, 0);
   339 
   339 
   340     QCOMPARE(widget.minimumWidth(),
   340     QCOMPARE(widget.minimumWidth(),
   341              leftChild.minimumWidth() + rightChild.minimumWidth() + spacerS);
   341              leftChild.minimumWidth() + rightChild.minimumWidth() + spacerS);
   342     QCOMPARE(widget.maximumWidth(), QLAYOUTSIZE_MAX);
   342     QCOMPARE(widget.maximumWidth(), QLAYOUTSIZE_MAX);
   343     QCOMPARE(widget.minimumHeight(),
   343     QCOMPARE(widget.minimumHeight(),
   346              qMax(leftChild.maximumHeight(), rightChild.maximumHeight()));
   346              qMax(leftChild.maximumHeight(), rightChild.maximumHeight()));
   347 
   347 
   348 
   348 
   349     spacer->changeSize(spacerS, spacerS, QSizePolicy::Fixed, QSizePolicy::Minimum);
   349     spacer->changeSize(spacerS, spacerS, QSizePolicy::Fixed, QSizePolicy::Minimum);
   350     layout.invalidate();
   350     layout.invalidate();
   351     QApplication::processEvents();
   351     QApplication::sendPostedEvents(0, 0);
   352     QCOMPARE(widget.minimumWidth(),
   352     QCOMPARE(widget.minimumWidth(),
   353              leftChild.minimumWidth() + rightChild.minimumWidth() + spacerS);
   353              leftChild.minimumWidth() + rightChild.minimumWidth() + spacerS);
   354     QCOMPARE(widget.maximumWidth(),
   354     QCOMPARE(widget.maximumWidth(),
   355              leftChild.maximumWidth() + rightChild.maximumWidth() + spacerS);
   355              leftChild.maximumWidth() + rightChild.maximumWidth() + spacerS);
   356 
   356 
   357 
   357 
   358     layout.removeItem(spacer);
   358     layout.removeItem(spacer);
   359 
   359 
   360     rightChild.hide();
   360     rightChild.hide();
   361     QApplication::processEvents();
   361     QApplication::sendPostedEvents(0, 0);
   362     QCOMPARE(widget.minimumSize(), leftChild.minimumSize());
   362     QCOMPARE(widget.minimumSize(), leftChild.minimumSize());
   363     QCOMPARE(widget.maximumSize(), leftChild.maximumSize());
   363     QCOMPARE(widget.maximumSize(), leftChild.maximumSize());
   364 
   364 
   365     rightChild.show();
   365     rightChild.show();
   366     layout.removeWidget(&rightChild);
   366     layout.removeWidget(&rightChild);
   367     QApplication::processEvents();
   367     QApplication::sendPostedEvents(0, 0);
   368     QCOMPARE(widget.minimumSize(), leftChild.minimumSize());
   368     QCOMPARE(widget.minimumSize(), leftChild.minimumSize());
   369     QCOMPARE(widget.maximumSize(), leftChild.maximumSize());
   369     QCOMPARE(widget.maximumSize(), leftChild.maximumSize());
   370 
   370 
   371     QWidget bottomChild(&widget);
   371     QWidget bottomChild(&widget);
   372     bottomChild.setPalette(QPalette(Qt::green));
   372     bottomChild.setPalette(QPalette(Qt::green));
   373     bottomChild.setMinimumSize(100, 100);
   373     bottomChild.setMinimumSize(100, 100);
   374     bottomChild.setMaximumSize(200, 200);
   374     bottomChild.setMaximumSize(200, 200);
   375     layout.addWidget(&bottomChild, 1, 0);
   375     layout.addWidget(&bottomChild, 1, 0);
   376     QApplication::processEvents();
   376     QApplication::sendPostedEvents(0, 0);
   377 
   377 
   378     QCOMPARE(widget.minimumHeight(),
   378     QCOMPARE(widget.minimumHeight(),
   379              leftChild.minimumHeight() + bottomChild.minimumHeight());
   379              leftChild.minimumHeight() + bottomChild.minimumHeight());
   380     QCOMPARE(widget.minimumWidth(),
   380     QCOMPARE(widget.minimumWidth(),
   381              qMax(leftChild.minimumWidth(), bottomChild.minimumWidth()));
   381              qMax(leftChild.minimumWidth(), bottomChild.minimumWidth()));
   383              leftChild.maximumHeight() + bottomChild.maximumHeight());
   383              leftChild.maximumHeight() + bottomChild.maximumHeight());
   384     QCOMPARE(widget.maximumWidth(),
   384     QCOMPARE(widget.maximumWidth(),
   385              qMax(leftChild.maximumWidth(), bottomChild.maximumWidth()));
   385              qMax(leftChild.maximumWidth(), bottomChild.maximumWidth()));
   386 
   386 
   387     bottomChild.hide();
   387     bottomChild.hide();
   388     QApplication::processEvents();
   388     QApplication::sendPostedEvents(0, 0);
   389     QCOMPARE(widget.minimumSize(), leftChild.minimumSize());
   389     QCOMPARE(widget.minimumSize(), leftChild.minimumSize());
   390     QCOMPARE(widget.maximumSize(), leftChild.maximumSize());
   390     QCOMPARE(widget.maximumSize(), leftChild.maximumSize());
   391 
   391 
   392     bottomChild.show();
   392     bottomChild.show();
   393     layout.removeWidget(&bottomChild);
   393     layout.removeWidget(&bottomChild);
   394     QApplication::processEvents();
   394     QApplication::sendPostedEvents(0, 0);
   395     QCOMPARE(widget.minimumSize(), leftChild.minimumSize());
   395     QCOMPARE(widget.minimumSize(), leftChild.minimumSize());
   396     QCOMPARE(widget.maximumSize(), leftChild.maximumSize());
   396     QCOMPARE(widget.maximumSize(), leftChild.maximumSize());
   397 }
   397 }
   398 
   398 
   399 
   399 
   421     QSize expectedSizeHint;
   421     QSize expectedSizeHint;
   422 
   422 
   423     SizeHinter leftChild(100,100);
   423     SizeHinter leftChild(100,100);
   424     leftChild.setPalette(QPalette(Qt::red));
   424     leftChild.setPalette(QPalette(Qt::red));
   425     layout.addWidget(&leftChild, 0, 0);
   425     layout.addWidget(&leftChild, 0, 0);
   426     QApplication::processEvents();
   426     QApplication::sendPostedEvents(0, 0);
   427     expectedSizeHint = leftChild.sizeHint();
   427     expectedSizeHint = leftChild.sizeHint();
   428     QCOMPARE(widget.sizeHint(), expectedSizeHint);
   428     QCOMPARE(widget.sizeHint(), expectedSizeHint);
   429 
   429 
   430 
   430 
   431     SizeHinter rightChild(200,100);
   431     SizeHinter rightChild(200,100);
   432     rightChild.setPalette(QPalette(Qt::green));
   432     rightChild.setPalette(QPalette(Qt::green));
   433     layout.addWidget(&rightChild, 0, 2);
   433     layout.addWidget(&rightChild, 0, 2);
   434     QApplication::processEvents();
   434     QApplication::sendPostedEvents(0, 0);
   435     QCOMPARE(rightChild.sizeHint(), QSize(200,100));
   435     QCOMPARE(rightChild.sizeHint(), QSize(200,100));
   436 
   436 
   437     expectedSizeHint += QSize(rightChild.sizeHint().width(), 0);
   437     expectedSizeHint += QSize(rightChild.sizeHint().width(), 0);
   438     QCOMPARE(widget.sizeHint(), expectedSizeHint);
   438     QCOMPARE(widget.sizeHint(), expectedSizeHint);
   439 
   439 
   440     layout.setColumnMinimumWidth(1, 100);
   440     layout.setColumnMinimumWidth(1, 100);
   441     widget.adjustSize();
   441     widget.adjustSize();
   442     expectedSizeHint += QSize(100,0);
   442     expectedSizeHint += QSize(100,0);
   443     QApplication::processEvents();
   443     QApplication::sendPostedEvents(0, 0);
   444     QCOMPARE(widget.sizeHint(), expectedSizeHint);
   444     QCOMPARE(widget.sizeHint(), expectedSizeHint);
   445 
   445 
   446     rightChild.hide();
   446     rightChild.hide();
   447     QApplication::processEvents();
   447     QApplication::sendPostedEvents(0, 0);
   448     expectedSizeHint -= QSize(rightChild.sizeHint().width(), 0);
   448     expectedSizeHint -= QSize(rightChild.sizeHint().width(), 0);
   449     QCOMPARE(widget.sizeHint(), expectedSizeHint);
   449     QCOMPARE(widget.sizeHint(), expectedSizeHint);
   450 
   450 
   451 
   451 
   452     layout.setColumnMinimumWidth(1, 0);
   452     layout.setColumnMinimumWidth(1, 0);
   457 
   457 
   458 #if 0
   458 #if 0
   459     leftChild.setMaximumWidth(200);
   459     leftChild.setMaximumWidth(200);
   460     rightChild.setMaximumWidth(200);
   460     rightChild.setMaximumWidth(200);
   461 
   461 
   462     QApplication::processEvents();
   462     QApplication::sendPostedEvents(0, 0);
   463     QCOMPARE(widget.maximumWidth(), leftChild.maximumWidth() + rightChild.maximumWidth());
   463     QCOMPARE(widget.maximumWidth(), leftChild.maximumWidth() + rightChild.maximumWidth());
   464 #endif
   464 #endif
   465 
   465 
   466     layout.removeWidget(&rightChild);
   466     layout.removeWidget(&rightChild);
   467     QApplication::processEvents();
   467     QApplication::sendPostedEvents(0, 0);
   468     QCOMPARE(widget.sizeHint(), expectedSizeHint);
   468     QCOMPARE(widget.sizeHint(), expectedSizeHint);
   469 
   469 
   470 
   470 
   471 }
   471 }
   472 
   472 
   918 
   918 
   919         m_toplevel->show();
   919         m_toplevel->show();
   920 #if defined(Q_WS_X11)
   920 #if defined(Q_WS_X11)
   921         qt_x11_wait_for_window_manager(m_toplevel);     // wait for the show
   921         qt_x11_wait_for_window_manager(m_toplevel);     // wait for the show
   922 #endif
   922 #endif
   923         QTest::qWait(20);
   923         QTest::qWait(40);
   924         m_toplevel->adjustSize();
   924         m_toplevel->adjustSize();
   925         QTest::qWait(120);                              // wait for the implicit adjustSize
   925         QTest::qWait(240);                              // wait for the implicit adjustSize
   926         // If the following fails we might have to wait longer.
   926         // If the following fails we might have to wait longer.
   927         // If that does not help there is likely a problem with the implicit adjustSize in show()
   927         // If that does not help there is likely a problem with the implicit adjustSize in show()
   928         if (!fixedSize.isValid()) {
   928         if (!fixedSize.isValid()) {
   929             // Note that this can fail if the desktop has large fonts on windows.
   929             // Note that this can fail if the desktop has large fonts on windows.
   930             QTRY_COMPARE(m_toplevel->size(), m_toplevel->sizeHint());
   930             QTRY_COMPARE(m_toplevel->size(), m_toplevel->sizeHint());