Seite 1 von 1
[gelöst] QDockWidget: auslesen und setzen der Andockseite
Verfasst: 19. August 2009 15:08
von pinki
Moin moin!
Ich habe mehrere DockWidgets, die frei umhergeschoben werden können.
Nun möchte ich die Position, Größe, angedockte Seite usw. beim Beenden speichern und beim nächsten Programmstart auslesen und das Aussehen wiederherstellen.
Mein Problem ist nun, dass ich nicht weiß, wie ich auslesen kann, an welcher Seite etwas angedockt wurde und wie ich das erneut setze.
Hat jemand einen Lösungsansatz?
Gruß
pinki
Verfasst: 19. August 2009 15:27
von Curtis Newton
Lass das das Mainwindow, andem die docken, erledigen:
Code: Alles auswählen
void MainWindow::readSettings()
{
...
QByteArray ba=settings.value("state").toByteArray();
if(!ba.isEmpty()) restoreState(ba);
}
void MainWindow::writeSettings()
{
...
QByteArray ba = saveState();
settings.setValue("state", ba);
}
Verfasst: 19. August 2009 15:28
von franzf
Aus der Doku:
QByteArray QMainWindow::saveState ( int version = 0 ) const
Saves the current state of this mainwindow's toolbars and dockwidgets. The version number is stored as part of the data.
The objectName property is used to identify each QToolBar and QDockWidget. You should make sure that this property is unique for each QToolBar and QDockWidget you add to the QMainWindow
To restore the saved state, pass the return value and version number to restoreState().
See also restoreState(), QWidget::saveGeometry(), and QWidget::restoreGeometry().
Verfasst: 19. August 2009 16:20
von pinki
Das klingt genau nach dem, was ich suche. Danke!
Allerdings wird anscheinend nicht alles wiederhergestellt.
Wenn ich beim Initialisieren der Docks sage, dass sie angezeigt werden sollen und weit danach dann restoreState() aufrufe, bleibt dann das show(), das vorher ausgeführt wurde oder wird das dann trotzdem versteckt?
Edit: Jetzt funktioniert es bestens. Ich hatte vergessen die Objektnamen zu setzen.
Vielen Dank!