Вам не нужно обрабатывать QSpacerItem
самостоятельно (в документации перечислены методы, которые вы должны использовать instrad для создания QSpacerItem
).
Если вы хотите добавить пробел определенного размера, вы можете использовать QVBoxLayout::addSpacing()
:
QWidget* w = new QWidget();
QVBoxLayout* layout = new QVBoxLayout(w);
layout->addWidget(new QPushButton("first"));
layout->addWidget(new QPushButton("second"));
layout->addWidget(new QPushButton("third"));
layout->addWidget(new QPushButton("fourth"));
layout->addSpacing(50);
layout->addWidget(new QPushButton("fifth"));
w->show();
Это будет минимальный пробел в 50 пикселей между четвертым и пятым :
Если вы хотите поместить кнопку пятую внизу, а остальные вверху, используйте QVBoxLayout::addStretch()
:
QWidget* w = new QWidget();
QVBoxLayout* layout = new QVBoxLayout(w);
layout->addWidget(new QPushButton("first"));
layout->addWidget(new QPushButton("second"));
layout->addWidget(new QPushButton("third"));
layout->addWidget(new QPushButton("fourth"));
layout->addStretch(1);
layout->addWidget(new QPushButton("fifth"));
w->show();