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