창의 지오메트리 복원하기
이 문서에서는 지오메트리 속성을 사용하여 창의 지오메트리를 저장하고 복원하는 방법에 대해 설명합니다. Windows에서는 기본적으로 QWindow::geometry()의 결과를 저장하고 다음 세션에서 QWindow::setGeometry()을 호출한 후 show()을 호출하는 것입니다.
X11에서는 보이지 않는 창에 아직 프레임이 없기 때문에 이 방법이 작동하지 않을 수 있습니다. 창 관리자가 나중에 창을 장식합니다. 이 경우 장식 프레임의 크기에 따라 창이 화면의 아래쪽/오른쪽 모서리로 이동합니다. X에서는 이러한 이동을 방지하는 방법을 제공하지만 일부 창 관리자는 이 기능을 구현하지 못합니다.
를 사용할 때 Qt Widgets를 사용하면 위젯 창의 지오메트리와 상태를 저장하고 복원하는 함수가 제공됩니다. 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()를 호출하는 것입니다.
© 2025 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.