void tst_QDockWidget::task169808_setFloating() { //we try to test if the sizeHint of the dock widget widget is taken into account class MyWidget : public QWidget { public: QSize sizeHint() const { const QRect& deskRect = qApp->desktop()->availableGeometry(); return QSize(qMin(300, deskRect.width() / 2), qMin(300, deskRect.height() / 2)); } QSize minimumSizeHint() const { return QSize(20,20); } void paintEvent(QPaintEvent *) { QPainter p(this); p.fillRect(rect(), Qt::red); } }; QMainWindow mw; mw.setCentralWidget(new MyWidget); QDockWidget *dw = new QDockWidget("my dock"); dw->setWidget(new MyWidget); mw.addDockWidget(Qt::LeftDockWidgetArea, dw); dw->setFloating(true); mw.show(); QVERIFY(QTest::qWaitForWindowExposed(&mw)); QCOMPARE(dw->widget()->size(), dw->widget()->sizeHint()); //and now we try to test if the contents margin is taken into account dw->widget()->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); dw->setFloating(false); QVERIFY(QTest::qWaitForWindowExposed(&mw)); qApp->processEvents(); //leave time processing events const QSize oldSize = dw->size(); const int margin = 20; dw->setContentsMargins(margin, margin, margin, margin); QVERIFY(QTest::qWaitForWindowExposed(&mw)); qApp->processEvents(); //leave time processing events //widget size shouldn't have changed QCOMPARE(dw->widget()->size(), dw->widget()->sizeHint()); //dockwidget should be bigger QCOMPARE(dw->size(), oldSize + QSize(margin * 2, margin * 2)); }
void MainWindow2::writeSettings() { QSettings settings("Pencil", "Pencil"); settings.setValue("editorPosition", pos()); settings.setValue("editorSize", size()); Palette* colourPalette = m_colorPalette; if (colourPalette != NULL) { settings.setValue("colourPalettePosition", colourPalette->pos()); settings.setValue("colourPaletteSize", colourPalette->size()); settings.setValue("colourPaletteFloating", colourPalette->isFloating()); } TimeLine* timelinePalette = editor->getTimeLine(); if (timelinePalette != NULL) { settings.setValue("timelinePalettePosition", timelinePalette->pos()); settings.setValue("timelinePaletteSize", timelinePalette->size()); settings.setValue("timelinePaletteFloating", timelinePalette->isFloating()); } QDockWidget* toolWidget = editor->toolSet; if (toolWidget != NULL) { settings.setValue("drawPalettePosition", toolWidget->pos()); settings.setValue("drawPaletteSize", toolWidget->size()); settings.setValue("drawPaletteFloating", toolWidget->isFloating()); } QDockWidget* optionPalette = m_toolOptionWidget; if (optionPalette != NULL) { settings.setValue("optionPalettePosition", optionPalette->pos()); settings.setValue("optionPaletteSize", optionPalette->size()); settings.setValue("optionPaletteFloating", optionPalette->isFloating()); } QDockWidget* displayPalette = m_displayOptionWidget; if (displayPalette != NULL) { settings.setValue("displayPalettePosition", displayPalette->pos()); settings.setValue("displayPaletteSize", displayPalette->size()); settings.setValue("displayPaletteFloating", displayPalette->isFloating()); } }
void tst_QDockWidget::task248604_infiniteResize() { #if defined Q_OS_BLACKBERRY QSKIP("Top level window is stretched to fullscreen"); #endif QDockWidget d; QTabWidget *t = new QTabWidget; t->addTab(new QWidget, "Foo"); d.setWidget(t); d.setContentsMargins(2, 2, 2, 2); d.setMinimumSize(320, 240); d.showNormal(); QTest::qWait(400); QCOMPARE(d.size(), QSize(320, 240)); }