调整QTableWidget列宽

6
我有一个使用QTableWidget创建的小部件: enter image description here 我希望表格的列能够自动调整大小,以便占据整个小部件的宽度,而行则保持原样。我知道有类似的问题,但我无法通过那种方式解决它。 这是我的代码:
void MainWindow::createTable(int rows, int columns) {
    mainList = new QTableWidget;
    QStringList headerLabels;
    headerLabels << "Title" << "Director" << "Year" << "Counter" << "Rating";
    mainList->setRowCount(rows);
    mainList->setColumnCount(columns);
    mainList->setHorizontalHeaderLabels(headerLabels);
    mainList->setEditTriggers(QAbstractItemView::DoubleClicked | QAbstractItemView::SelectedClicked);
    mainList->setSelectionBehavior(QAbstractItemView::SelectRows);
    mainList->resizeColumnsToContents();
    mainList->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

    setCentralWidget(mainList);
}
1个回答

22

考虑到您正在使用Qt5,请尝试

QTableWidget* mainList = new QTableWidget;
QHeaderView* header = mainList ->horizontalHeader();
header->setSectionResizeMode(QHeaderView::Stretch);

或者

有一个标题标志可以确保QTableView的最后一列在调整大小时填满其父级。

header->setStretchLastSection(true);

4
我想补充一点,如果你想让非最后一列占据所有剩余的空间,你应该这样写:"ui->table->horizontalHeader()->setSectionResizeMode(columnIndex, QHeaderView::Stretch);" - Davor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接