Qt QTableWidget列调整大小

Nor*_* Me 6 c++ qt qtablewidget

我有一个主窗口在QToolBar,QWidget的QTabWidget.布局是"网格".但是,我的窗口可以调整大小,因为我有一个布局,它运行良好.但是有一个问题,在我的QTabWidget中我有一个带有两列的QTableWidget(布局也是"Grid").如果我调整整个窗口的大小,QTableWidget会调整大小,但不会调整列.

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

那么......如果我的QTableWidget调整大小,我怎么能调整它们的大小呢?

Pri*_*eys 11

  1. 改变ResizeModeQHeaderView.例如,使用:

horizontalHeader()->setResizeMode( 0, QHeaderView::Stretch );
Run Code Online (Sandbox Code Playgroud)

使第一列调整大小,使其QTableWidget始终为满.


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

  • 在Qt5中没有,它是horizo​​ntalHeader() - > setSectionResizeMode(0,QHeaderView :: Stretch); setResizeMode()方法不存在. (3认同)

fat*_*fat 11

  1. 要拉伸最后一列:

    ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 要拉伸列#n:

    ui->tableWidget->horizontalHeader()->setSectionResizeMode(n, QHeaderView::Stretch);
    
    Run Code Online (Sandbox Code Playgroud)


小智 5

对此的最佳解决方案,在 Qt5 中,您必须使用setSectionResizeMode而不是setResizeMode

tabv = QTableView()
tabv.horizontalHeader().setSectionResizeMode(QHeaderView::Stretch)
Run Code Online (Sandbox Code Playgroud)

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

tabv.horizontalHeader().resizeSections(QHeaderView::Stretch)
Run Code Online (Sandbox Code Playgroud)