[gelöst] QDockWidget: auslesen und setzen der Andockseite

Alles rund um die Programmierung mit Qt
Antworten
pinki
Beiträge: 10
Registriert: 19. August 2009 14:54

[gelöst] QDockWidget: auslesen und setzen der Andockseite

Beitrag 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
Zuletzt geändert von pinki am 20. August 2009 15:02, insgesamt 1-mal geändert.
Curtis Newton
Beiträge: 122
Registriert: 11. Juni 2008 18:39

Beitrag 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);
}

franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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().
pinki
Beiträge: 10
Registriert: 19. August 2009 14:54

Beitrag 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!
Antworten