Resizing QTableWidget Columns and Rows to Fill Table
Asked Answered
U

1

13

I have a QTableWidget with an N number of columns, which when the number of columns are set, they automically fill in the entire QTableWidget. When I try to dynamically change the number of columns to N/2 columns, the size of each column does not change. This results in the right half the QTableWidget being nothing but whitespace.

Conversly, if I were it reset the column count to 2*N, the column widths adjust themselves appropriately and fill the QTableWidget.

I'm wondering how I can reset the number of columns and row without the QTableWidget having any whitespace?

Urbanite answered 1/7, 2013 at 18:55 Comment(0)
B
32

Have you tried setting the QHeaderView's Resize Mode?

    QTableWidget* myTable = new QTableWidet;
    QHeaderView* header = myTable->horizontalHeader();
    header->setResizeMode(QHeaderView::Stretch);

Edit: As pointed out, in Qt 5:

    QTableWidget* myTable = new QTableWidet;
    QHeaderView* header = myTable->horizontalHeader();
    header->setSectionResizeMode(QHeaderView::Stretch);
Beech answered 1/7, 2013 at 19:7 Comment(3)
This works. However, setSectionResizeMode should be used instead. setResizeMode is not available in Qt5. However, it seems I have to reset the mode every time I update the row or column count.Urbanite
QHeaderView::setStretchLastSection(true) might also be an option, depending on your application.Marni
myTable.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch) in pyqt5Kvass

© 2022 - 2024 — McMap. All rights reserved.