7

我有一个带有QToolbarQWidgetQTabWidget的MainWindow。布局是“网格”。但是,我的窗口是可调整大小的,因为我有一个布局,所以效果很好。但是有一个问题,在我的QTabWidget中,我有一个带有两列的QTableWidget(布局也是“网格”)。如果我调整整个窗口的大小, QTableWidget会调整大小而不是列。

例如,每当我调整窗口大小时,我的QTabWidget和其中的QTableWidget也会调整大小。只有我的QTableWidget中的列不会。

那么......如果我的QTableWidget调整大小,我该如何调整它们的大小?

4

7 回答 7

17
  1. 更改. ResizeMode_ QHeaderView例如,使用:

horizontalHeader()->setResizeMode( 0, QHeaderView::Stretch );

使第一列调整大小,以便QTableWidget总是满的。


  1. 调整大小后,自己覆盖resizeEvent并设置每列的宽度QTableWidget
于 2013-03-28T16:18:52.240 回答
11
  1. 拉伸最后一列:

    ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
    
  2. 拉伸列#n

    ui->tableWidget->horizontalHeader()->setSectionResizeMode(n, QHeaderView::Stretch);
    
于 2014-02-04T12:40:57.493 回答
6

最好的解决方案,在 Qt5 中你必须使用setSectionResizeMode而不是setResizeMode

tabv = QTableView()
tabv.horizontalHeader().setSectionResizeMode(QHeaderView::Stretch)

您也可以Stretch在调整大小时指定模式

tabv.horizontalHeader().resizeSections(QHeaderView::Stretch)
于 2015-07-29T13:31:04.633 回答
4
ui->mytable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
于 2015-03-24T16:51:48.747 回答
2

如果您只想调整最后一列的大小:

ui->tableWidget->horizontalHeader()->setStretchLastSection(1);
于 2013-12-16T17:43:14.470 回答
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#horizo​​ntalHeader

于 2013-03-28T16:09:37.747 回答
1

在 Qt5 中,您必须使用setSectionResizeMode而不是setResizeMode

QTableWidget* myTable = new QTableWidet;
QHeaderView* header = myTable->horizontalHeader();
header->setSectionResizeMode(QHeaderView::Stretch);
于 2014-01-14T09:01:02.823 回答