2011-12-20 5 views
8

У меня есть список, содержащий списки с двумя элементами, слово и число. Этот список будет представлен с использованием tablewidget.PyQt: Как установить разные размеры заголовков для отдельных заголовков?

Моя цель - создать таблицу с двумя столбцами и с необходимыми строками, но заголовок столбца, который будет содержать слова, должен быть больше столбца чисел.

Я могу использовать столбцы размера для контента, но я хочу, чтобы таблица без белого пустого пространства вокруг таблицы после изменения размера.

Для создания gui-кода я использую QtDesigner.Thanks.

ответ

14

Существует несколько методов класса QHeaderView, которые, вероятно, будут делать то, что вы хотите. Самые простой:

table.horizontalHeader().setStretchLastSection(True) 

Это гарантирует, что последний столбец автоматически изменяется в соответствии с доступным пространством в таблице, оставляя ширину других столбцов, поскольку они (и изменяемого пользователем).

В качестве альтернативы существуют способы установки столбцов ResizeMode.

Для Qt5:

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

Для Qt4:

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

Это позволит зафиксировать ширину второго столбца, и убедитесь, что первый столбец автоматически изменяется для заполнения оставшегося пространства (но предотвращение любое другое изменение размера пользователем).

+0

Есть ли способ добиться того, что с помощью Qt Desginer? Есть ли возможность? – GiannisIordanou

+0

В конструкторе 'ResizeMode' нет опции, но для' setStretchLastSection' (т. Е. 'Header/horizontalHeaderStrechLastSection' в редакторе свойств) существует опция. – ekhumoro

4

лучшее решение для этого, в Qt5 вы должны использовать setSectionResizeMode вместо setResizeMode:

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

или

tabv.horizontalHeader().setSectionResizeMode(1)