Qt Designer中的分割器布局调整行为

15

我在使用Qt拖放视图时遇到了大小问题。

让我通过一张图片来解释:

enter image description here

这是我的窗体的主窗口。

问题如下:

我们有4个选项卡小部件。左侧选项卡小部件有一个水平分隔条指向两个中间小部件。 2个中间小部件在左右两侧都有一个垂直分隔条和一个水平分隔条。

右边的小部件在其左侧有一个垂直分隔条。

因此,所有视图都使用分隔符相互连接。

最后,主窗体使用水平布局以可调整大小的方式将所有内容组合在一起。

问题是,最左侧和最右侧小部件的宽度是固定的(在设计器中)。 我想把它们变小一点,就像这样:

enter image description here

可以看到小部件已经被重新调整大小。我能够在运行应用程序时手动调整分隔条来实现这一点。但是,有没有办法在QtDesigner中做到这一点?我尝试过使用策略来解决这个问题,但是没有什么进展。这是否表明我对策略或者总体布局的知识欠缺?

使用QtDesigner应该选择哪些选项来实现所需的布局?我希望避免使用代码。

希望我能尽快解决这个问题。可能是我忽略了一些简单的东西...


我第一次使用分隔器,但在设计器中没有看到任何允许我配置分隔器位置的选项。我本来想尝试在对话框构造函数中通过代码进行设置(可能会尝试将分隔器一侧的组件调整为最小值),但我还没有做到这一步。我很想听听其他人的意见。 - aldo
很高兴听到我不是唯一遇到这个问题的人。它应该很简单,但对于我来说设置尺寸限制如最小宽度等似乎没有帮助。 - Joey Roosing
大小可以使用QSplitter的setStretchFactor函数进行设置。但正如您已经注意到的那样,它无法在Qt Designer中设置。 - user362638
在Qt Designer中,可以设置Stretch因子,它属于SizePolicy,水平Stretch/垂直Stretch。或者这与您所讨论的方法不同吗? - Joey Roosing
水平和垂直拉伸在sizePolicy下可能与setStrechFactor函数密切相关,但是通过修改水平和垂直拉伸的值与setStrechFactor函数相比,我无法获得相同的结果。 - user362638
2个回答

13

您可以使用“水平伸展”和“垂直伸展”属性来更改分割的位置。

例如,当中央上方QTabWidget的垂直伸展和中央QSplitter的水平伸展都为1,而其他所有值都保持为0时,您将获得所需的结果。

当您有多个非零伸展值时,比率的结果(例如:2个中央QTabWidget的垂直伸展分别为2和1 => 2/3和1/3)在设计师中不可见,但在运行应用程序时似乎有效。

附注:您也可以使用选项卡化的QDockWidget实现相同的结果,但仅通过设计师无法进行选项卡化设置。


我简直不敢相信这是如此简单。我第一次就正确了,使用中间小部件和中间分隔条来拉伸1,它起作用了。 - Joey Roosing
谢谢!像魔法一样奏效了! - johngreen
2
对于那些可能像我一样找不到在QtDesigner中设置“水平/垂直拉伸”的人,这里有一个小提示:这些功能是在“大小策略”下设置的,不能直接通过搜索框访问。 - fateflame

3

我设置了起始位置:

QList<int> list= ui->splitter->sizes();
list.replace(0,this->height()/0.3);
list.replace(1,this->height()/0.7);
ui->splitter->setSizes(list);

记得最小化子窗口小部件的尺寸


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