我正在与QMainWindow
和QDockWidget
进行斗争,这似乎是一个混乱的区域。
我需要非常简单的事情:当应用程序关闭时,应该保存dockwidgets的排列,并且当打开应用程序时,应该恢复安排。
问题是saveState()
/ restoreState()
方法与中央窗口小部件非常奇怪。有几种变体,每种都有自己的问题:
1。中央窗口小部件设置为,例如QPlainTextEdit
或QLabel
当状态恢复时,dockwidgets占用尽可能多的水平空间,左侧和右侧dockwidgets中间的瘦中央小部件。中央窗口小部件的大小和位置仅保持垂直,但不保存dockwidgets和中央窗口小部件之间的水平边界。
2。中央窗口小部件设置为NULL
如果我明确地致电:
this->setCentralWidget(NULL);
然后stateSave()
/ stateRestore()
正常工作:状态已正确保存和恢复,但由于某些奇怪的原因,用户无法将小部件停靠在顶部或底部。小部件只能停靠在一个水平行中,无论我多么努力地将其停靠在顶部或底部。
第3。没有中央小部件
没有中央部件"我的意思是根本不接触中央部件。出于某种原因,与NULL
中央窗口小部件相比,行为是不同的:
状态保存并正确恢复,但是如果我将窗口缩小,然后再次展开,则dockwidgets将保持较小,中间有大量未使用的区域。因此,用户必须手动调整它们的大小。
所有这些看起来都很奇怪。可能我不得不选择"没有中央小部件"变种,但我感到困惑,因为我不理解这种行为,也许这是一个错误,然后,行为可能会在未来版本中发生变化。
所以,每种方式都有自己的问题。如果有人能给我一些解决其中任何一个的线索,我会很高兴。