ウィンドウのジオメトリの復元
このドキュメントでは、geometryプロパティを使用してウィンドウのジオメトリを保存および復元する方法について説明します。Windowsでは、基本的にはQWindow::geometry()の結果を保存し、次のセッションでshow()を呼び出す前にQWindow::setGeometry()を呼び出します。
X11 では、非表示のウィンドウにはまだフレームがないため、この方法は機能しない場合があります。ウィンドウマネージャは後でウィンドウに装飾を適用します。この場合、装飾フレームのサイズに応じて、ウィンドウは画面の下部または右隅に向かって移動してしまいます。X にはこの移動を回避する方法が用意されていますが、一部のウィンドウマネージャではこの機能が実装されていない場合があります。
を使用する際 Qt Widgetsを使用する場合、Qtにはウィジェットのウィンドウのジオメトリと状態を保存・復元する関数が用意されています。QWidget::saveGeometry()はウィンドウのジオメトリと最大化/全画面表示の状態を保存し、QWidget::restoreGeometry()はそれらを復元します。復元関数は、復元されたジオメトリが利用可能な画面領域の外側にあるかどうかもチェックし、外側にある場合は適切に修正します:
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());
}別の解決策として、pos()とsize()の両方を保存し、show()を呼び出す前に、QWidget::resize()とmove()を使用してジオメトリを復元する方法があります。
© 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.