如何调整 QDockWidget 的大小

3

我创建了一个没有centralwidget的应用程序,在我的主窗口中,显示为最大化:

setCentralWidget(0);
setWindowState(Qt::WindowMaximized);

在我的主窗口中,我有三个停靠区。dock1被设置为停靠在leftDockWidgetArea区域,dock2和dock3被设置为停靠在rightDockWidgetArea区域。此外,我通过一定的排列方式来安排dock2和dock3。

splitDockWidget(ui->dock2, ui->dock3, Qt::Horizontal);

我得到的结果是三个码头的宽度比为2:1:1

我的问题是我该如何设置三个码头的宽度,以便它们可以按照1:4:1进行排列。

假设我的屏幕宽度为1024。 我试过了:

ui->dockWidget_PrimeVis->resize(1000, 1000);

这种方法行不通,因为我发现有些人说 dock 的大小是由主窗口控制的。所以我在主窗口中调用 resizeDocks 方法,例如:

resizeDocks({ ui->dock1, ui->dock2,ui->dock3}, { 150,600,150 }, Qt::Horizontal); 

它不起作用。另外,由于每个停靠窗口都包含一个子类化小部件,我也尝试为每个子类化小部件设置大小,但同样无效。

因为我们可以通过 GUI 手动更改每个停靠窗口的大小,所以我相信应该有一种方法可以用代码设置每个停靠窗口的大小,对吗?有人知道怎么做吗?

1个回答

3
官方文档如下所述:
QDockWidget 充当其使用 setWidget() 设置的子窗口部件的包装器。自定义大小提示、最小和最大尺寸以及大小策略应在子窗口部件中实现。QDockWidget 将尊重它们,调整自己的约束以包括框架和标题。不应在 QDockWidget 上设置大小约束,因为这些约束取决于它是否停靠;已停靠的 QDockWidget 没有框架和较小的标题栏。
解决方案:
只需子类化您在 dockwidget 中显示的窗口部件即可。然后,您可以重载不同的方法来更改大小提示。例如:QWidget.minimumSizeHint()
未经测试。
你也可以尝试设置最小大小。但我不知道这是否有效。

谢谢Tim。然而,我不想改变包含小部件的最小尺寸。换句话说,dock1、dock2和dock3应该都有相同的最小宽度150。我认为应该有一种直接更改dock几何形状的方法,对吗? - Burton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接