Höhe von angedocktem DockWidget speichern
Verfasst: 27. November 2014 08:49
Hallo,
ich verwende in meiner Anwendung neben einem QMainWindow mehrere QDockWidgets, die allesamt an bestimmten Stellen im QMainWindow andockbar sind. Das funktioniert soweit. Ich möchte nun die Höhe eines angedockten QDockWidget speichern, um es bei erneutem Öffnen wieder in alter Größe vorzufinden. Bisher verwende ich folgenden Code, der die Fensterzustände über ein QSettings-Objekt in einer .ini-Datei ablegt und bei erneutem Starten einliest. Dies funktioniert auch soweit:
[closeEvent von MainWindow]
[Konstruktor von MainWindow]
Mein Problem ist, dass ein Dock-Widget, welches am unteren Rand angedockt wurde und danach in der Höhe verändert wurde, nach dem Starten selten in der vorigen Höhe angezeigt wird. Ich habe es auch damit versucht, die relevanten Koordinaten separat zu speichern und wieder zu restaurieren. Kein Erfolg. Mein Code dazu:
[closeEvent von MainWindow]
[Konstruktor von MainWindow]
Die Koordinaten sind übrigens vom Dock-Widget selbst. Ich habe es auch mit den Koordinaten vom Haupt-Widget innerhalb des Dock-Widget probiert, geht aber auch nicht. Hat jemand eine Idee, wie man das lösen könnte bzw. wie man einem angedockten QDockWidget eine bestimmte Höhe im Programmcode aufzwingen kann?
Viele Grüße
Matthias
ich verwende in meiner Anwendung neben einem QMainWindow mehrere QDockWidgets, die allesamt an bestimmten Stellen im QMainWindow andockbar sind. Das funktioniert soweit. Ich möchte nun die Höhe eines angedockten QDockWidget speichern, um es bei erneutem Öffnen wieder in alter Größe vorzufinden. Bisher verwende ich folgenden Code, der die Fensterzustände über ein QSettings-Objekt in einer .ini-Datei ablegt und bei erneutem Starten einliest. Dies funktioniert auch soweit:
[closeEvent von MainWindow]
Code: Alles auswählen
settings->setValue(Const::MainGeometry_Key, saveGeometry()); // Einstellungen zu Hauptfenster und Dockwidgets speichern
settings->setValue(Const::MainStates_Key, saveState())
Code: Alles auswählen
restoreGeometry(settings->value(Const::MainGeometry_Key).toByteArray()); // Einstellungen zu Hauptfenster und Dockwidgets restaurieren
restoreState(settings->value(Const::MainStates_Key).toByteArray());
[closeEvent von MainWindow]
Code: Alles auswählen
settings->setValue(Const::DockEventLogY_Key, ui->dockEventLog->y()); // Koordinaten separat speichern
settings->setValue(Const::DockEventLogH_Key, ui->dockEventLog->height());
Code: Alles auswählen
QRect rect = ui->dockEventLog->geometry();
int y = settings->value(Const::DockEventLogY_Key,"0").toInt();
if (y) rect.setY(y);
int height = settings->value(Const::DockEventLogH_Key,"0").toInt();
if (height) rect.setHeight(height);
ui->dockEventLog->setGeometry(rect);
Viele Grüße
Matthias