如何调整 QTableWidget 列的大小

问题描述 投票:0回答:7

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

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

如果我的 QTableWidget 调整大小,我如何调整它们的大小?

c++ qt qtablewidget
7个回答
18
投票
  1. 更改
    ResizeMode
    QHeaderView
    。例如,使用:

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

调整第一列的大小,使

QTableWidget
始终充满。


  1. 在调整
    resizeEvent
    大小后,覆盖
    QTableWidget
    并自行设置每列的宽度。

11
投票
  1. 拉伸最后一列:

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

    ui->tableWidget->horizontalHeader()->setSectionResizeMode(n, QHeaderView::Stretch);
    

6
投票

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

setSectionResizeMode
而不是
setResizeMode

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

您还可以在调整大小时指定

Stretch
模式

tabv.horizontalHeader().resizeSections(QHeaderView::Stretch)

4
投票
ui->mytable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

2
投票

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

ui->tableWidget->horizontalHeader()->setStretchLastSection(1);


1
投票

在 Qt5 中你必须使用

setSectionResizeMode
而不是
setResizeMode

QTableWidget* myTable = new QTableWidet;
QHeaderView* header = myTable->horizontalHeader();
header->setSectionResizeMode(QHeaderView::Stretch);
© www.soinside.com 2019 - 2024. All rights reserved.