у меня есть 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);
Вы можете увидеть, что делают политики разных размеров Вот.