У меня есть QHBoxLayout
, который включает два виджета QLabel
. Мой левый QLabel
намного больше моего правого QLabel
, однако QHBoxLayout
делит вывод пополам, поэтому левая часть макета слишком мала, а правая часть макета слишком велика. Как изменить QHBoxLayout
, чтобы создать неравное пропорциональное пространство для каждого включенного виджета?
Интервал QHBoxLayout
Ответы (1)
Система компоновки должна резервировать больше места для более крупной этикетки, если это необходимо и если есть свободное место.
Если вы хотите, чтобы макет резервировал определенное пространство для большей метки, вы можете использовать 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);
Вы можете увидеть, что делают разные политики размера здесьа>.