Пространство между виджетами в QVBoxLayout

Я пытаюсь сделать форму входа с Qt5.0.1. Я создал 2 виджета, и я поместил свои метки и линейные изменения в одну из них, а свою кнопку - в другую. Затем я помещал эти 2 виджета в QVBoxLayout, но пространство между двумя виджетами в макете больше, чем цель. Я попробовал setSpacing и setContentsMargin, но они не работали для этой программы.

vhandle->setSpacing(0);
vhandle->setMargin(0);
vhandle->setContentsMargins(0,0,0,0);
vhandle->addWidget(handle,0, Qt::AlignTop);
vhandle->addWidget(handle2,0, Qt::AlignTop);

но ничего не изменилось в пространстве между двумя виджетами:

http://i.stack.imgur.com/R33MM.png

что мне делать?

Ответ 1

Проблема заключается не в настройках полей QVboxLayout, а в настройках полей макета виджетов вашего контейнера и настройке интервала QVBoxLayout. Вы уже установили интервал в 0, это должно быть хорошо. Кроме того, предполагается, что upperWidgetLayout - это макет верхнего виджета, а lowerWidgetLayout - макет нижнего виджета, попробуйте

upperWidgetLayout->setContentsMargins(-1, -1, -1, 0);
lowerWidgetLayout->setContentsMargin(-1, 0, -1, -1);

Это устанавливает нижнее поле верхнего макета виджетов и верхнее поле нижнего макета виджетов равным 0, так что между содержимым двух виджетов нет места:

Dialog Layout

Временная окраска различных виджетов обычно является хорошим подходом для отслеживания таких проблем. Вы также можете использовать Qt Designer для разработки пользовательского интерфейса и посмотреть исходный код, который создается (или использовать файл .ui непосредственно в вашем проекте).