2

我大量使用停靠小部件让用户按照她想要的方式安排工具。我的一些停靠小部件包含静态控件(FS,固定垂直尺寸),其他描绘图像,越大越好(ES,扩展垂直尺寸)。

我面临的问题是我无法获得让我这样做的大小提示配置:

  1. 使可变大小的dockwidgets尽可能大
  2. 让所有的dockwidgets标签彼此没有错误的行为

对于 1.,我可以将所有 FS 的内容小部件的垂直策略设置为“固定”。这将强制容器将所有可用空间用于可变大小的小部件。但是,一旦 ES 小部件与 FS 小部件一起被标记,而 FS 小部件未显示,我充其量是顽固的行为(用户无法调整大小)和最坏的错误行为(调整大小时,会发生绘图错误,实际大小没有变化)。

对于 2.,我可以将所有垂直策略设置为“首选”(FS)或“扩展”(ES)。这应该优先考虑 ES,但事实并非如此。我还尝试过使用 Vertical Stretch 进行游戏(虽然它在不涉及 DockWidgets 的其他场景中很有帮助)

我遇到了这样一种情况:默认情况下,应用程序会浪费空间,并且每当窗口大小/布局发生变化时,用户都必须对 dockwidget 大小进行多次调整。这是非常乏味和违反直觉的。

我该怎么做?

还有一个后续问题:如何教 DockWidget 它的内容具有特定的纵横比?

4

1 回答 1

0

我发现最大的问题是我使用自定义小部件进行显示,这不会使virtual QSize sizeHint() const方法过载。

重载这个方法并返回一个较大的数字,例如 500,垂直尺寸,极大地帮助了布局。

似乎(私有 API)QMainWindowLayout对最佳停靠小部件大小进行了初步猜测,然后坚持下去。在同一课程中,它似乎忽略了首选和扩展策略或拉伸设置之间的差异。

通过提供一个大的 sizeHint,自定义小部件可以更好地与执行相同操作的库存 Qt 小部件(例如 QListView)取得平衡。

结果是可以接受的,但远非完美。

于 2013-11-11T06:31:56.270 回答