我有一个MainWindow,带有QToolbar、QWidget和QTabWidget。布局是“网格”。然而,我的窗口是可以调整大小的,而且由于我有一个布局,所以效果很好。但是有一个问题,在我的QTabWidget中,我有一个带有两列的QTableWidget(布局也是“网格”)。如果我调整整个窗口的大小,QTableWidget 会调整大小,但不会调整列的大小。
例如,每当我调整窗口大小时,我的 QTabWidget 也会调整大小,其中的 QTableWidget 也会调整大小。只有我的QTableWidget中的列不会。
如果我的 QTableWidget 调整大小,我如何调整它们的大小?
ResizeMode
的 QHeaderView
。例如,使用:horizontalHeader()->setResizeMode( 0, QHeaderView::Stretch );
调整第一列的大小,使
QTableWidget
始终充满。
resizeEvent
大小后,覆盖 QTableWidget
并自行设置每列的宽度。拉伸最后一列:
ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
拉伸列#n:
ui->tableWidget->horizontalHeader()->setSectionResizeMode(n, QHeaderView::Stretch);
最好的解决方案是,在 Qt5 中你必须使用
setSectionResizeMode
而不是 setResizeMode
tabv = QTableView()
tabv.horizontalHeader().setSectionResizeMode(QHeaderView::Stretch)
您还可以在调整大小时指定
Stretch
模式
tabv.horizontalHeader().resizeSections(QHeaderView::Stretch)
ui->mytable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
如果您只想调整最后一列的大小:
ui->tableWidget->horizontalHeader()->setStretchLastSection(1);
您可以使用 QHeaderView 和方法 QHeaderView::setResizeMode() 更改列或行的“调整大小模式”。
http://qt-project.org/doc/qt-4.8/qheaderview.html#setResizeMode
http://qt-project.org/doc/qt-4.8/qtableview.html#verticalHeader
http://qt-project.org/doc/qt-4.8/qtableview.html#horizontalHeader
在 Qt5 中你必须使用
setSectionResizeMode
而不是 setResizeMode
QTableWidget* myTable = new QTableWidet;
QHeaderView* header = myTable->horizontalHeader();
header->setSectionResizeMode(QHeaderView::Stretch);