Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-16252

QDockWidgets of maximized windows are not restored to the correct size when calling QWidget::restoreGeometry() , QMainWindow::restoreState() in a sequence

    XMLWordPrintable

    Details

    • Commits:
      cbfb6bda1d1ce3e169db6a0deb9bd901076653e4

      Description

      The geometry is not restored correctly when running the example below and following these steps:

      1. Build and run the app,
      2. Maximize the mainwindow and put dockwidget1 in the left dockarea and dockwidget2 in the bottom dockarea.
      3. Close the application.
      4. Run the application again. The geometry and state are correct.
      5. Resize the left dock and bottom dock bigger, so that the central widget is displayed very small in the top right corner.
      6. Close the app
      8. Re-run the app - the geometry and state from point 5 are not restored, instead the geometry and state from point 2 are shown.

      #include <QtGui>
      #if QT_VERSION >= 0x50000
      #include <QtWidgets>
      #endif
      
      class MainWindow : public QMainWindow
      {
      public:
      	MainWindow()
      	{
      		setCentralWidget(new QTextEdit(this));
      		QDockWidget *dock1 = new QDockWidget(this);
      		dock1->setObjectName("First dock");
      		dock1->setWidget(new QLabel("Label 1", dock1));
      		QDockWidget *dock2 = new QDockWidget(this);
      		dock2->setObjectName("Second dock");
      		dock2->setWidget(new QLabel("Label 2", dock2));
      		addDockWidget(Qt::TopDockWidgetArea, dock1);
      		addDockWidget(Qt::TopDockWidgetArea, dock2);
      		readSettings();
      	}
      	void readSettings() {
      		QSettings settings("SomeTest", "SaveRestore Example");
      		restoreGeometry(settings.value("geometry").toByteArray());
      		restoreState(settings.value("windowState").toByteArray());
      	}
      
      	void writeSettings()
      	{
      		QSettings settings("SomeTest", "SaveRestore Example");
      		settings.setValue("geometry", saveGeometry());
      		settings.setValue("windowState", saveState());
      	}
      
      	void closeEvent(QCloseEvent *event)
      	{
      		QMainWindow::closeEvent(event);
      		writeSettings();
      	}
      };
      
      int main(int argc, char** argv)
      {
      	QApplication app(argc, argv);
      	MainWindow window;
      	window.show();
      	return app.exec();
      }

      with qtbug16252.zip:

      • Run app, maximize
      • Enlarge left dock widget until it covers approx 2/3 of screen width
      • Quit
      • Relaunch: Note dock widget width is not restored

        Attachments

          Issue Links

          For Gerrit Dashboard: QTBUG-16252
          # Subject Branch Project Status CR V

            Activity

              People

              Assignee:
              anwojcie Anna Wojciechowska
              Reporter:
              naevdal Sigrid Fjell Nævdal (Inactive)
              Votes:
              38 Vote for this issue
              Watchers:
              47 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:

                  Gerrit Reviews

                  There is 1 open Gerrit change