使用Qt在设置中存储码头寡妇布局和大小的任何简单方法?

use*_*020 4 qt docking

我有一个带有一些内部可停靠窗户的主窗口.我可以移动,调整大小并重做那些可停靠的窗口.关闭并重新打开程序后,我希望保持移动,大小和重新锁定.有没有简单的方法来实现它?我认为它会使用设置.但是哪些信息应保存在设置中.以及如何设置所有这些停靠窗口的默认布局?单击操作按钮时,可以将其还原.谢谢.

小智 20

查看QMainWindow :: saveState/restoreState.它正是这样做的.

保存:

QSettings settings;
settings.setValue("DOCK_LOCATIONS",this->saveState(SOME_VERSION_DEFINE));
Run Code Online (Sandbox Code Playgroud)

恢复:

QSettings settings;
this->restoreState(settings.value("DOCK_LOCATIONS").toByteArray(),SOME_VERSION_DEFINE);
Run Code Online (Sandbox Code Playgroud)

  • @IceFire:我遇到了类似的问题,但事实证明我没有为停靠小部件设置对象名称,并且它导致布局执行意外的操作。实际上,我一开始没有注意到设置保存时出现错误(使用 PySide 1.2.4 和 Qt 4.8.6) (2认同)

Xav*_*olt -3

不幸的是,没有,没有内置的方法可以做到这一点。

您需要循环遍历所有工具栏和可停靠小部件,并将它们的位置(可能还有它们的可见性)写入文件。要恢复,您可以读取该文件并根据您读取的内容设置您的位置。

好消息是,一旦设置了这样的系统,创建默认布局就很容易 - 将所有小部件移动到您想要的位置,然后保存布局文件,就像上面的用户布局一样。您甚至可以有多个布局,只要它们都有单独的文件即可。

  • 这个答案显然是错误的。KDE 程序甚至通过其 KXMLGUI 框架默认保存窗口状态。在 Qt 级别,Michael 的答案是正确的。 (2认同)