警告

本节包含从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()恢复几何形状。