我的 MainWindow 带有 QToolbar , QWidget 和 QTabWidget 。布局是“网格”。但是,我的窗口可以调整大小,因为我有一个布局,它运行良好。但是有一个问题,在我的 QTabWidget 中我有一个带有两列的 QTableWidget (布局也是“Grid”)。如果我调整整个窗口的大小, QTableWidget 会调整大小,但不会调整列。
例如,每当我调整窗口大小时,我的 QTabWidget 也会调整大小,并且 QTableWidget 也会调整大小。只有我的 QTableWidget 中的列不会。
那么......如果我的 QTableWidget 调整大小,我怎样才能调整它们的大小?
答案 0 :(得分:10)
ResizeMode
的{{1}}。例如,使用:QHeaderView
使第一列调整大小,使horizontalHeader()->setResizeMode( 0, QHeaderView::Stretch );
始终满。
QTableWidget
并在resizeEvent
调整大小后自行设置每列的宽度。答案 1 :(得分:10)
要拉伸最后一列:
ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
拉伸列 #n :
ui->tableWidget->horizontalHeader()->setSectionResizeMode(n, QHeaderView::Stretch);
答案 2 :(得分:4)
ui->mytable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
答案 3 :(得分: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
答案 4 :(得分:1)
如果您只想调整最后一列:
ui->tableWidget->horizontalHeader()->setStretchLastSection(1);
答案 5 :(得分:1)
最佳解决方案,在Qt5中,您必须使用setSectionResizeMode
代替setResizeMode
tabv = QTableView()
tabv.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
答案 6 :(得分:0)
在Qt5中,您必须使用setSectionResizeMode
代替setResizeMode
QTableWidget* myTable = new QTableWidet;
QHeaderView* header = myTable->horizontalHeader();
header->setSectionResizeMode(QHeaderView::Stretch);