Причина
Когда размер окна изменяется, что-то должно занять доступное пространство.Поскольку сами кнопки имеют ограниченный размер, расстояние между ними увеличивается.
Решение
Я бы предложил вам добавить невидимый виджет, который будет использоваться в качестве заполнителя.Затем настройте интервал макета соответствующим образом.
Пример
Вот пример, который я подготовил для вас, как изменить код для достижения желаемого эффекта:
QHBoxLayout* pLayout = new QHBoxLayout(&wgt);
pLayout->addWidget(button1);
pLayout->addSpacing(6);
pLayout->addWidget(button2);
pLayout->addWidget(new QWidget());
pLayout->setSpacing(0);
Альтернативное решение
Чтобы ограничить размер виджета, используйте QWidget::setMinimumSize
и QWidget::setMaximumSize
:
wgt.setMinimumSize(button1->minimumWidth()
+ button2->minimumWidth()
+ pLayout->contentsMargins().left()
+ pLayout->contentsMargins().right()
+ pLayout->spacing(),
button1->minimumHeight()
+ pLayout->contentsMargins().top()
+ pLayout->contentsMargins().bottom()
+ pLayout->spacing());
wgt.setMaximumSize(button1->maximumWidth()
+ button2->maximumWidth()
+ pLayout->contentsMargins().left()
+ pLayout->contentsMargins().right()
+ pLayout->spacing(),
button1->maximumHeight()
+ pLayout->contentsMargins().top()
+ pLayout->contentsMargins().bottom()
+ pLayout->spacing());
Если вы заранее знаете точные размеры, это можно упростить до:
wgt.setMinimumWidth(324);
wgt.setMaximumWidth(524);
wgt.setFixedHeight(118);