ウィンドウのジオメトリを復元する
このドキュメントでは、ジオメトリ プロパティを使用してウィンドウのジオメトリを保存および復元する方法について説明します。Windowsでは、基本的にQWindow::geometry ()の結果を保存し、次のセッションでQWindow::setGeometry ()を呼び出してからshow ()を呼び出します。
X11では、不可視ウィンドウはまだフレームを持っていないため、これは機能しないかもしれません。ウィンドウ・マネージャは後でウィンドウを装飾します。このとき、ウィンドウは装飾フレームのサイズに応じて画面の下隅や右隅に移動します。Xはこのずれを回避する方法を提供していますが、一部のウィンドウ・マネージャはこの機能を実装していません。
Qtウィジェットを使用する場合、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() の両方を保存し、QWidget::resize() とmove() を使用してジオメトリをリストアしてから、show() を呼び出す方法もあります。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。