Имам два QDockWidget, само един от тях е видим по това време, управлявам това чрез toggleViewAction().
Това, което трябва да направя, е да искам двата QDockWidget да бъдат на едно и също място, с еднакъв размер и закачени в една и съща dockWidgetArea със същата ориентация и ред спрямо други QDockWidget.
Направих повечето от това с този код:
void myMainWindow::slotToggleDocks(QAction* action) {
if(action == viewDock1) {
Dock1->setFloating(Dock2->isFloating());
Dock1->resize(Dock2->size());
Dock1->restoreGeometry(Dock2->saveGeometry());
Dock1->move(Dock2->pos());
addDockWidget(dockWidgetArea(Dock2), Dock1);
...
Dock2->hide();
} else if(action == viewDock2) {
Dock2->setFloating(Dock1->isFloating());
Dock2->resize(Dock1->size());
Dock2->restoreGeometry(Dock1->saveGeometry());
Dock2->move(Dock1->pos());
addDockWidget(dockWidgetArea(Dock2), Dock1);
...
Dock1->hide();
}
}
този код кара двете да имат едно и също местоположение и размер и да са закачени в една и съща област (ляво, дясно, ...), но не гарантира, че Docks ще имат същото оформление с другите QDockWidget в същата dockWidgetArea.
Значение, ако това беше предишното оформление:
http://holmez.net/qdockwidget/1.png
Това е след превключване:
http://holmez.net/qdockwidget/2.png
Ето какво искам: