Wiederherstellen der Fenstergeometrie
Dieses Dokument beschreibt, wie man die Geometrie eines Fensters mithilfe der Geometrieeigenschaften speichert und wiederherstellt. Unter Windows bedeutet dies im Wesentlichen, das Ergebnis von ` QWindow::geometry()` zu speichern und in der nächsten Sitzung ` QWindow::setGeometry()` aufzurufen, bevor ` show()` aufgerufen wird.
Unter X11 funktioniert dies möglicherweise nicht, da ein unsichtbares Fenster noch keinen Rahmen hat. Der Fenstermanager fügt den Rahmen erst später hinzu. In diesem Fall verschiebt sich das Fenster je nach Größe des Rahmens in Richtung der unteren/rechten Ecke des Bildschirms. Obwohl X eine Möglichkeit bietet, diese Verschiebung zu vermeiden, implementieren einige Fenstermanager diese Funktion nicht.
Bei der Verwendung von Qt Widgetsbietet Qt Funktionen, die die Geometrie und den Zustand eines Widget-Fensters für Sie speichern und wiederherstellen. ` QWidget::saveGeometry()` speichert die Fenstergeometrie sowie den maximierten bzw. Vollbild-Zustand, während ` QWidget::restoreGeometry()` diese wiederherstellt. Die Wiederherstellungsfunktion prüft zudem, ob die wiederhergestellte Geometrie außerhalb der verfügbaren Bildschirmgeometrie liegt, und passt sie gegebenenfalls entsprechend an:
void MyMainWindow::closeEvent(QCloseEvent *event)
{
QSettings settings("MyCompany", "MyApp");
settings.setValue("geometry", saveGeometry());
settings.setValue("windowState", saveState());
QMainWindow::closeEvent(event);
}
void MainWindow::readSettings()
{
QSettings settings("MyCompany", "MyApp");
restoreGeometry(settings.value("myWidget/geometry").toByteArray());
restoreState(settings.value("myWidget/windowState").toByteArray());
}Eine weitere Lösung besteht darin, sowohl ` pos()` als auch ` size()` zu speichern und die Geometrie mithilfe von ` QWidget::resize()` und ` move()` wiederherzustellen, bevor ` show()` aufgerufen wird.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.