2013-01-11 7 views
5

Pytanie to wszystko.Widżet zawarty w więcej niż jednej komórce w obiekcie QGridLayout nie jest wyśrodkowany.

Mam siatkę 5 x 3.

Wygląda to

row 0: buttonA--buttonA--buttonA nothing buttonB--buttonB--buttonB 

row 1: empty row 

row 2: buttonC nothing buttonD nothing buttonE nothing buttonF  

w pomieszczeniach, gdzie nie ma nic w całej kolumnie lub wierszu minimumRowHeight i wszystkich tych ustawień będzie działać. Dobrze?

Cóż. Przycisk A i przycisk B (i reszta) nigdy nie są wyśrodkowane na te 3 komórki, które dzielą. NIGDY. nie ma znaczenia, co piszę o parametrach układu.

Wymazałem kod, ponieważ w końcu otrzymał go w układzie pionowym, a wewnątrz w dwóch poziomych. Te skupiają się w ten sposób. Ale chciałbym je lepiej pozycjonować.

Jakie prace doesnt jest podczas dodawania widżet, używając:

addWidget (widget, 0,0, 2,0, Qt :: AlignHCenter); nawet AlignCenter nie działa.

Jak zrobić to wyśrodkowane lub wyrównane w prawo?

Dzięki!

+0

Dowiedziałem się, że niektóre posty informują o dodaniu atrapy obojętnej w przestrzeni 3 komórek. Następnie umieść na nim układ, a widżet, który chcemy wyśrodkować. Czy to działa?czy to nie jest takie skomplikowane? – darkgaze

+0

Na marginesie pokazałeś siatkę 7 x 3, a nie 5 x 3 –

+0

Jeśli chcesz, aby przycisk A był rozciągnięty na 3 kolumny, musisz zrobić "addWidget (widget, 0, 0, ** 0, 3 **); " Spróbuj, jeśli to działa –

Odpowiedz

9

Składnia QGridLayout::addWidget() jest tak:

void QGridLayout :: addWidget (QWidget * widget, int fromRow, int fromColumn, int rowspan, int columnSpan, Qt :: wyrównanie Wyrównanie = 0)

z opisem:

Ta wersja dodaje dany widżet do sieci komórkowej, obejmujących MU 100 wierszy/kolumn. Komórka rozpocznie się od wartościRow, z kolumny obejmującej wiersze rowsSpan i kolumny columnSpan.

Oznacza to linia

addWidget(widget, 0, 0, 2, 0, Qt::AlignHCenter); 

ma fromRow = 0, fromColumn = 0, rowSpan = 2 i columnSpan = 0. Oznacza to, że zaczyna się od wiersza 0 i rozciąga się na dwa wiersze, tj. Będzie w wierszu 0 i 1 (uwaga: w sumie dwa wiersze, a nie dwa dodatkowe wiersze). Również zaczyna się od kolumny 0 z rozpiętością 0, co moim zdaniem oznacza, że ​​zakres kolumn jest ignorowany.

Więc co naprawdę chcesz powinno być:

addWidget(widget, 0, 0, 0, 3, Qt::AlignCenter); 

Można mieć do eksperymentowania z dostosowaniem nieco.

Dodatkowo można rzucić okiem na this example, który pokazuje, jak rozciągnąć przycisk na dwa rzędy i dwie kolumny.

+0

Znakomity! Dobra robota. Wielkie dzięki za miłą odpowiedź – darkgaze

Powiązane problemy