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

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

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

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

6

Решение

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

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

чтобы изменить размер первого столбца, чтобы QTableWidget всегда полон


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

Другие решения

  1. Чтобы растянуть последний столбец:

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

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

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

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

1

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

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

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

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

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

QTableWidget* myTable = new QTableWidet;
QHeaderView* header = myTable->horizontalHeader();
header->setSectionResizeMode(QHeaderView::Stretch);
0
По вопросам рекламы [email protected]