PyQt: Как установить разные размеры заголовков для отдельных заголовков?

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

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

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

Для создания кода GUI я использую QtDesigner. Спасибо.

2 ответа

Решение

Есть несколько методов 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)

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

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

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

или же

tabv.horizontalHeader().setSectionResizeMode(1)
Другие вопросы по тегам