警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
恢复窗口的几何形状¶
如何保存和恢复窗口几何形状。
本文档描述了如何使用几何属性保存和恢复窗口的几何形状。在Windows上,这基本上是存储QWindow::geometry()的结果,并在下一次会话中调用show()之前调用QWindow::setGeometry()。
在X11上,这可能不起作用,因为一个不可见的窗口还没有框架。窗口管理器稍后会装饰窗口。当这种情况发生时,窗口会根据装饰框架的大小向屏幕的右下角移动。尽管X提供了一种方法来避免这种移动,但一些窗口管理器未能实现此功能。
在使用Qt Widgets时,Qt提供了保存和恢复小部件窗口几何形状和状态的函数。QWidget::saveGeometry()保存窗口的几何形状和最大化/全屏状态,而QWidget::restoreGeometry()则恢复它。恢复函数还会检查恢复的几何形状是否超出可用屏幕几何形状,并在必要时进行适当修改:
def closeEvent(self, event): settings = QSettings("MyCompany", "MyApp") settings.setValue("geometry", saveGeometry()) settings.setValue("windowState", saveState()) QMainWindow.closeEvent(event) def readSettings(self): settings = QSettings("MyCompany", "MyApp") restoreGeometry(settings.value("myWidget/geometry").toByteArray()) restoreState(settings.value("myWidget/windowState").toByteArray())
另一个解决方案是存储pos()和size(),并在调用show()之前使用QWidget::resize()和move()恢复几何形状。