QHBoxLayout间距

时间:2014-05-01 20:30:12

标签: c++ qt qwidget qlayout

我有一个QHBoxLayout,其中包含两个QLabel小部件。我的左侧QLabel比右侧QLabel大得多,但是QHBoxLayout将输出分成两半,因此布局的左侧太小而右侧的布局太小了布局太大了。如何修改QHBoxLayout以为每个包含的小部件创建不等比例的空间?

1 个答案:

答案 0 :(得分:7)

如果需要,布局系统应为更大的标签保留更多空间,并且如果有空间可用。

如果您想强制布局为较大标签预留特定数量的空间,可以使用QBoxLayout::setStretch

例如,如果要为较大的标签保留70%的空间,为较小的标签保留30%的空间,可以使用:

ui->horizontalLayout->setStretch(0, 7);
ui->horizontalLayout->setStretch(1, 3);

或者,您可以使较小的标签仅保留其所需的绝对最小空间,并使用较大的标签以使用大小策略保留尽可能多的空间。

对于较小的标签,请将水平尺寸政策设置为QSizePolicy::Maximum,对于较大的标签,请将水平尺寸政策设置为QSizePolicy::Minimum(或QSizePolicy::MinimumExpanding)。

ui->label_Large->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
ui->label_Small->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);

您可以查看here的不同尺寸政策。