QT Designer QTableWidget как учитывать ширину колонок по самому заголовку и по ширине содержимого ячеек

QTableWidget

QT Designer QTableWidget как учитывать ширину колонок по самому заголовку и по ширине содержимого ячеек Чтобы максимально все информация влезала и лишнего не было !!!

Ширину по содержимому ячеек ранее сделал так:

self.tableWidget.resizeColumnsToContents()

Ответы (1 шт):

Автор решения: S. Nick

QHeaderView *QTableView::horizontalHeader() const

Возвращает горизонтальный заголовок табличного представления.
Больше https://doc.qt.io/qt-5/qtablewidget-members.html

void QHeaderView::setSectionResizeMode(QHeaderView::ResizeMode mode)

Устанавливает ограничения на то, как размер заголовка может быть изменен до тех, которые описаны в данном режиме.
Больше https://doc.qt.io/qt-5/qheaderview.html#setSectionResizeMode

QHeaderView::ResizeToContents

QHeaderView автоматически изменит размер раздела до оптимального размера в зависимости от содержимого всего столбца или строки. Размер не может быть изменен пользователем или программно.
Больше https://doc.qt.io/qt-5/qheaderview.html#ResizeMode-enum

import sys
from PyQt5.Qt import *


class ExampleWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.setMinimumSize(QSize(300, 200))
        self.myarray = [
            [1, 2, 3, 4], 
            [1.1, 2.1, 3.1, 4.1], 
            [1.2, 2.2, 3.2, 4.2], 
            [1.3, 2.3, 3.3, 4.3]
        ]
        self.centralWidget = QWidget()
        self.setCentralWidget(self.centralWidget)
        
        self.tableWidget = QTableWidget()
        grid = QGridLayout(self.centralWidget)
        grid.addWidget(self.tableWidget) 
    
        line = len(self.myarray)
        column = len(self.myarray[0])
        self.tableWidget.setRowCount(line)
        self.tableWidget.setColumnCount(column)
        row_labels = ['A', '222', 'Hello World']
        self.tableWidget.setHorizontalHeaderLabels(row_labels) 

        for c, row in enumerate(self.myarray):
            for r, e in enumerate(row):
                item = QTableWidgetItem(str(e))
                self.tableWidget.setItem(r, c, item)

# +++ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
        self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)
        self.tableWidget.horizontalHeader().setMinimumSectionSize(0)
# +++ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


if __name__ == "__main__":
    app = QApplication(sys.argv)
    app.setStyle("Windows")
    mainWin = ExampleWindow()
    mainWin.show()
    sys.exit( app.exec_() )

введите сюда описание изображения

→ Ссылка