【发布时间】:2016-01-11 23:12:09
【问题描述】:
我有一个 Qt 程序,目前我使用 Qsettings.saveGeometry() 和 Qsettings.saveState() 函数来允许程序恢复用户在上一个会话中设置的布局。然而,并非所有几何图形都被保存,只有主窗口而不是子窗口,尤其是停靠窗口的浮动位置和停靠窗口中的表格列宽。
这个帖子似乎试图提供答案(但在 C++ 中而不是 python 中):http://www.qtforum.org/article/38362/save-geometry-of-all-widgets-recursively.html
我正在使用 Python 进行编码,而我的 C++ 不是很好,所以我无法完全按照上面链接中的示例进行操作。
有人知道这种方法是否有效吗?
一般情况下是否可以使用Qsettings来存储停靠窗口的浮动位置和表格列宽?
谁能推荐一个基于 python/pyside 的解决方案?
非常感谢。
罗恩
【问题讨论】:
-
您提供的链接没有实现解决方案。它只是打印出每个子部件的几何形状。他们建议将其用于确定哪些小部件需要保存。简而言之,该代码遍历主窗口的所有子窗口 (
my_window.children()) 并检查子窗口是否继承自QWidget(my_child_widget.isWidgetType())。您可以做类似的事情并为您关心的每个孩子致电my_child_widget.saveGeometry()。您可能还需要使用此方法递归检查每个孩子的孩子。 -
因此,您可能更容易保留对要保存的每个小部件的引用列表,然后通过调用
saveGeometry来遍历该列表。
标签: python qt pyside qsettings