2013-05-15 20 views
11

Próbuję utworzyć formularz logowania z Qt5.0.1. Stworzyłem 2 widżety i umieściłem etykiety i edycje linii w jednym z nich, a mój przycisk w innym. Następnie umieszczam te dwa widżety w QVBoxLayout, ale przestrzeń między dwoma widgetami w układzie jest więcej niż celem. Próbowałem setSpacing i setContentsMargin, ale nie działały one dla tego programu.Spacja między widżetami w QVBoxLayout

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

ale nic nie zmieniło się w przestrzeni pomiędzy dwoma widżetów:

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

co mam zrobić?

Odpowiedz

11

Problem nie jest ustawieniami marginesów QVboxLayout, ale ustawieniami marginesów układu widgetów kontenera i ustawieniem odstępów w QVBoxLayout. Już ustawiłeś odstęp na 0, powinno to być w porządku. Ponadto zakłada się, że upperWidgetLayout jest układ górnej widget i lowerWidgetLayout układ dolnej widget, spróbuj

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

Ustawia dolny margines układ górnej widgetu i górny margines układ sądu niższej widgetu do 0, tak że nie ma miejsca pomiędzy zawartością dwóch widżetów:

Dialog Layout

Tymczasowo kolorowania różne widżety jest zwykle dobrym podejściem do wyśledzenia takich problemów. Możesz również użyć Qt Designer do zaprojektowania interfejsu użytkownika i spojrzeć na generowany kod źródłowy (lub użyć pliku .ui bezpośrednio w projekcie).