QMainWindow.saveState()/ .restoreState()错误地处理中央窗口小部件

时间:2015-07-05 16:08:04

标签: qt qmainwindow qdockwidget

我正在与QMainWindowQDockWidget进行斗争,这似乎是一个混乱的区域。

我需要非常简单的事情:当应用程序关闭时,应该保存dockwidgets的排列,并且当打开应用程序时,应该恢复安排。

问题是saveState() / restoreState()方法与中央窗口小部件非常奇怪。有几种变体,每种都有自己的问题:

1。中央窗口小部件设置为,例如QPlainTextEditQLabel

当状态恢复时,dockwidgets占用尽可能多的水平空间,左侧和右侧dockwidgets中间的瘦中央小部件。中央窗口小部件的大小和位置仅保持垂直,但不保存dockwidgets和中央窗口小部件之间的水平边界。

2。中央窗口小部件设置为NULL

如果我明确地致电:

this->setCentralWidget(NULL);

然后stateSave() / stateRestore()正常工作:状态已正确保存和恢复,但由于某些奇怪的原因,用户无法将小部件停靠在顶部或底部。小部件只能停靠在一个水平行中,无论我多么努力地将其停靠在顶部或底部。

第3。没有中央小部件

没有中央部件"我的意思是根本不接触中央部件。出于某种原因,与NULL中央窗口小部件相比,行为是不同的:

状态保存并正确恢复,但是如果我将窗口缩小,然后再次展开,则dockwidgets将保持较小,中间有大量未使用的区域。因此,用户必须手动调整它们的大小。

所有这些看起来都很奇怪。可能我不得不选择"没有中央小部件"变种,但我感到困惑,因为我不理解这种行为,也许这是一个错误,然后,行为可能会在未来版本中发生变化。

所以,每种方式都有自己的问题。如果有人能给我一些解决其中任何一个的线索,我会很高兴。

0 个答案:

没有答案