Restauration de la géométrie d'une fenêtre

Ce document décrit comment sauvegarder et restaurer la géométrie d'une fenêtre en utilisant les propriétés de la géométrie. Sous Windows, il s'agit essentiellement de stocker le résultat de QWindow::geometry() et d'appeler QWindow::setGeometry() dans la session suivante avant d'appeler show().

Sous X11, cela peut ne pas fonctionner car une fenêtre invisible n'a pas encore de cadre. Le gestionnaire de fenêtres décorera la fenêtre ultérieurement. Dans ce cas, la fenêtre se déplace vers le coin inférieur/droit de l'écran en fonction de la taille du cadre de décoration. Bien que X fournisse un moyen d'éviter ce décalage, certains gestionnaires de fenêtres n'implémentent pas cette fonctionnalité.

Lorsque l'on utilise Qt WidgetsQt Widgets fournit des fonctions qui sauvegardent et restaurent la géométrie et l'état d'une fenêtre widget. QWidget::saveGeometry La fonction restore () sauvegarde la géométrie de la fenêtre et son état maximisé/fullscreen, tandis que QWidget::restoreGeometry() la restaure. La fonction de restauration vérifie également si la géométrie restaurée est en dehors de la géométrie d'écran disponible, et la modifie le cas échéant :

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

Une autre solution consiste à stocker à la fois pos() et size() et à restaurer la géométrie à l'aide de QWidget::resize() et move() avant d'appeler show().

© 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.