Изменение размера столбца Qt QTableWidget

У меня есть файл MainWindow С QToolbar, QWidget и QTabWidget. Макет "сетка". Однако мое окно можно изменить, и поскольку у меня есть макет, он работает хорошо. Но есть одна проблема, в моем QTabWidget у меня есть QTableWidget С двумя столбцами (макет также "сетка"). Если я изменю размер всего окна QTableWidget изменяет размер, но не столбцы.

например Всякий раз, когда я изменяю размер окна, my QTabWidget изменение размера и QTableWidget в нем тоже. Только колонки в my QTableWidget не будет.

Так... как я могу изменить их размер, если мой QTableWidget изменяет?

7 ответов


  1. изменить ResizeMode на QHeaderView. Например, используйте:

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

сделать первый столбец размер так QTableWidget всегда полон.


  1. переопределить resizeEvent и установить ширину каждого столбца себя, когда QTableWidget был изменен.

  1. чтобы растянуть последнюю колонку:

    ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
    
  2. растянуть столбец #n:

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

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

вы можете изменить "режим изменения размера" ваших столбцов или строк с помощью 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


Если вы хотите изменить размер только последнего столбца:

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

лучшее решение для этого, в Qt5 вы должны использовать setSectionResizeMode вместо setResizeMode

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

в Qt5 вы должны использовать setSectionResizeMode вместо setResizeMode

QTableWidget* myTable = new QTableWidet;
QHeaderView* header = myTable->horizontalHeader();
header->setSectionResizeMode(QHeaderView::Stretch);