Интервал QHBoxLayout

У меня есть QHBoxLayout, который включает два виджета QLabel. Мой левый QLabel намного больше моего правого QLabel, однако QHBoxLayout делит вывод пополам, поэтому левая часть макета слишком мала, а правая часть макета слишком велика. Как изменить QHBoxLayout, чтобы создать неравное пропорциональное пространство для каждого включенного виджета?


person user3594111    schedule 01.05.2014    source источник


Ответы (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);

Вы можете увидеть, что делают разные политики размера здесь.

person thuga    schedule 02.05.2014