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

Ce document décrit comment enregistrer et restaurer la géométrie d'une fenêtre à l'aide des propriétés de géométrie. Sous Windows, cela revient essentiellement à stocker le résultat de la fonction ` QWindow::geometry()` et à appeler ` QWindow::setGeometry()` lors de la session suivante avant d'appeler ` show()`.

Sous X11, cela peut ne pas fonctionner car une fenêtre invisible ne dispose 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 propose un moyen d’éviter ce déplacement, certains gestionnaires de fenêtres ne prennent pas en charge cette fonctionnalité.

Lorsque vous utilisez Qt Widgets, Qt fournit des fonctions qui enregistrent et restaurent pour vous la géométrie et l’état d’une fenêtre de widget. La fonction ` QWidget::saveGeometry()` enregistre la géométrie de la fenêtre et son état (agrandie ou plein écran), tandis que la fonction ` QWidget::restoreGeometry()` la restaure. La fonction de restauration vérifie également si la géométrie restaurée dépasse la géométrie disponible à l’écran et, le cas échéant, la modifie en conséquence :

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 à enregistrer à la fois pos() et size(), puis à 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.