Как это исправить, во многом зависит от того, какое поведение вы хотите увидеть. Я предполагаю, что вы хотите, чтобы этикетки и светодиоды оставались именно там, где они есть, и сохраняли свой размер.
То, что происходит, это то, что компоновка сетки изменяется с вашим окном (как ваши кнопки), но выравнивание по левому краю удерживает элементы управления в левом положении, таким образом, пространство.
Сначала удалите строку gl-> setAlignment (Qt :: AlignLeft).
Во-вторых, вы хотите убедиться, что вы правильно установили sizePolicy как на своих QLabels, так и на своих QLeds, потому что в противном случае ваши QLeds начнут изменять размеры по горизонтали. То, что вы хотите, это политика фиксированного горизонтального размера. Вот пример:
QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);
sizePolicy.setHeightForWidth(label->sizePolicy().hasHeightForWidth());
label->setSizePolicy(sizePolicy);
Совершенно другой способ сделать то же самое - добавить несколько вызовов setStretch () в ваш горизонтальный макет. Но вам придется делать это для каждого столбца в макете, который вы хотите растянуть. В основном каждый для каждой кнопки, но пропускает расположение сетки в первом столбце. Вот так ...
lo->setStretch(1, 1); // Column 1 is your first button
lo->setStretch(2, 1);
...
lo->setStretch(19, 1)l // 19 columns in total, 15 buttons plus 4 spacing.