我有一个包含两个QHBoxLayout
小部件的QLabel
。我的左QLabel
比我的右QLabel
大得多,但是QHBoxLayout
将输出分成两半,因此布局的左侧太小,布局的右侧太大。如何修改QHBoxLayout
为每个包含的小部件创建不等比例的空间?
最佳答案
如果需要,布局系统应该为更大的标签保留更多的空间,并且如果有可用空间。
如果要强制布局为较大的标签保留特定的空间量,则可以使用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不同大小的策略。