8

有没有办法让 layoutStretch 属性始终被遵守?例如,我将其设置为“1,3,2”,但随后第一部分中的小部件(标签)(“1,3,2”中的“1”)扩展(添加更多文本时),并且那么 1:3:2 的配给就不再受到尊重。也就是说,“1:3:2”的比例变成了更​​像“3:1:3”的比例。

4

1 回答 1

10

你应该看看财产QWidget::sizePolicy。它控制布局sizeHint()在更新几何图形时如何尊重其子级。

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

QLabel *label = ...;
...
label->setSizePolicy(QSizePolicy::Ignored, label->sizePolicy().verticalPolicy());

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

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


在 QtDesigner 中,您可以像这样设置子小部件的 sizePolicy:

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

于 2012-05-22T00:58:34.067 回答