恢复窗口几何形状
本文档描述了如何使用几何属性保存和恢复窗口的几何形状。在 Windows 上,这基本上是将 QWindow::geometry() 的结果存储,并在下一次会话之前调用 QWindow::setGeometry(),然后调用 show()。
在 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() 来恢复几何形状。
© 2024 Qt 公司。此处包含的文档贡献的版权属于其各自的版权所有者。本提供的文档是根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款进行许可的。Qt 和相应的标志是芬兰以及全球其他国家的 Qt 公司的商标。所有其他商标均归其各自的所有者所有。