2011-12-20 12 views
8

Mam listę zawierającą listę z dwoma elementami, słowem i liczbą. Ta lista zostanie przedstawiona przy użyciu tabeli.PyQt: Jak ustawić różne rozmiary nagłówków dla poszczególnych nagłówków?

Moim celem jest stworzenie tabeli z dwiema kolumnami iz niezbędnymi wierszami, ale nagłówek kolumny, która będzie zawierał słowa, powinien być większy niż kolumna z liczbami.

Mogłabym użyć rozmiaru kolumn do zawartości, ale chcę mieć tabelę bez białej pustej białej przestrzeni wokół stołu, po zmianie rozmiaru.

Do stworzenia kodu gui używam QtDesigner.Thanks.

Odpowiedz

14

Istnieje kilka metod klasy QHeaderView, które prawdopodobnie wykonają to, co chcesz. Najprostszym jest:

table.horizontalHeader().setStretchLastSection(True) 

Zapewni to, że ostatnia kolumna jest automatycznie przeskalowane w celu dopasowania do wolnego miejsca w tabeli, pozostawiając szerokości innych kolumn, ponieważ są one (i skalowalny przez użytkownika).

Alternatywnie istnieją metody ustawiania kolumn ResizeMode.

Na Qt5:

table.setColumnWidth(1, 80) 
table.horizontalHeader().setSectionResizeMode(0, QHeaderView.Stretch) 

Na Qt4:

table.setColumnWidth(1, 80) 
table.horizontalHeader().setResizeMode(0, QHeaderView.Stretch) 

ten ustali szerokość drugiej kolumnie i zapewnienia pierwsza kolumna jest zmieniany automatycznie wypełniając pozostałą przestrzeń (ale zapobiega wszelkie inne zmiany rozmiaru przez użytkownika).

+0

Czy istnieje sposób, aby to osiągnąć przy użyciu Qt desginer? Czy istnieje opcja? – GiannisIordanou

+0

Nie ma opcji w projektancie dla 'ResizeMode', ale w Edytorze właściwości istnieje' setStretchLastSection' (tj. 'Header/horizontalHeaderStrechLastSection'). – ekhumoro

4

najlepszym rozwiązaniem dla tego, w Qt5 trzeba użyć setSectionResizeMode zamiast setResizeMode:

tabv = QTableView() 
tabv.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) 

lub

tabv.horizontalHeader().setSectionResizeMode(1) 
Powiązane problemy