调整QDockWidget的大小

Nyt*_*ras 11 c++ user-interface qt qdockwidget

我有一个QMainWindow包含几个QDockWidgets.一次只能显示其中一个.我的问题是:

当我隐藏dockWidget并显示另一个时,无论我设置了什么QSizePolicys,sizeHint,sizeConstraint,新显示的大小都与刚隐藏的大小相同!我想新所示,以恢复自己的最后大小,但我无法找到一个调整的任何方法QDockWidget,而不固定它的大小setMinimumSizesetMaximumSize.

事实上有一种方法,但我认为它非常难看:

setMinimumWidth(500);
setMaximumWidth(500);
qApp().processEvents();
setMinimumWidth(0);
setMaximumWidth(9999);
Run Code Online (Sandbox Code Playgroud)

肯定有更好的办法?!有什么建议?

小智 2

从文档中:

QDockWidget 充​​当其子窗口小部件的包装器,通过 setWidget() 设置。自定义尺寸提示、最小和最大尺寸以及尺寸策略应在子窗口小部件中实现。QDockWidget 将尊重它们,调整其自身的约束以包括框架和标题。不应在 QDockWidget 本身上设置大小约束,因为它们会根据它是否停靠而变化;停靠的 QDockWidget 没有框架和较小的标题栏。

这意味着您应该调整子窗口小部件的大小,而不是调整 DockWidget 的大小。

  • 是的,我已经读过好几遍了。我尝试了几个小时,通过实现 sizeHint() 并设置各种策略来实现正确的大小调整,但没有达到预期的效果。在我看到一个有效的示例之前,我不会相信文档的这一部分。除此之外,我仍然希望 DockWidges 恢复其最后的大小,以免用户每次更改显示的 DockWidget 时都强制调整它们的大小。 (4认同)