修复布局的大小

时间:2012-05-21 20:19:06

标签: qt qt4

有没有办法让总是遵守layoutStretch属性?例如。我把它设置为“1,3,2”,但是第一部分中的小部件(标签)(“1,3,2”中的“1”)扩展(当添加更多文本时),然后1:3:2口粮不再受到尊重。也就是说,“1:3:2”的比例变成了更​​像“3:1:3”的东西。

1 个答案:

答案 0 :(得分:7)

您应该查看属性QWidget::sizePolicy。它控制布局在更新几何图形时如何尊重其子项的sizeHint()

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

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

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

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


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

之前:
enter image description here
收缩:
enter image description here
选择布局中的项目:
enter image description here
将水平尺寸政策设为“已忽略”:
enter image description here
结果:
enter image description here