修复布局的大小

Dav*_*ria 6 qt qt4

有没有办法使layoutStretch属性始终被遵守?例如,我将它设置为"1,3,2",但是第一部分中的小部件(标签)("1,3,2"中的"1")扩展(当添加更多文本时),以及那么1:3:2的配给量就不再受到尊重了.也就是说,"1:3:2"比率变成更像"3:1:3"的东西.

lee*_*mes 7

你应该看一下这家酒店QWidget::sizePolicy.它控制布局sizeHint()在更新几何图形时如何尊重其子项.

所以你需要做的是:通过将三个子窗口小部件的水平sizePolts设置为:使布局忽略子窗口小部件的水平sizeHints QSizePolicy::Ignored:

QLabel *label = ...;
...
label->setSizePolicy(QSizePolicy::Ignored, label->sizePolicy().verticalPolicy());
Run Code Online (Sandbox Code Playgroud)

(第二个参数将确保此语句不会更改垂直策略.当然,您应该设置每个子窗口小部件的大小策略,此示例代码仅用于标签.)

请注意,布局的内容必须是小部件; 我认为嵌套布局不能分配大小策略(但我可能错了).至少使用QtDesigner,没有办法将大小策略应用于布局本身(如果它不是小部件的布局).请参阅评论了解详情


在QtDesigner中,您可以设置子窗口小部件的sizePolicy,如下所示:

之前:
在此输入图像描述
收缩:
在此输入图像描述
选择布局中的项目:
在此输入图像描述
将水平大小策略设置为"忽略":
在此输入图像描述
结果:
在此输入图像描述