Изменение размера столбца Qt QTableWidget
У меня есть файл MainWindow С QToolbar, QWidget и QTabWidget. Макет "сетка". Однако мое окно можно изменить, и поскольку у меня есть макет, он работает хорошо. Но есть одна проблема, в моем QTabWidget у меня есть QTableWidget С двумя столбцами (макет также "сетка"). Если я изменю размер всего окна QTableWidget изменяет размер, но не столбцы.
например Всякий раз, когда я изменяю размер окна, my QTabWidget изменение размера и QTableWidget в нем тоже. Только колонки в my QTableWidget не будет.
Так... как я могу изменить их размер, если мой QTableWidget изменяет?
7 ответов
- изменить
ResizeMode
наQHeaderView
. Например, используйте:
horizontalHeader()->setResizeMode( 0, QHeaderView::Stretch );
сделать первый столбец размер так QTableWidget
всегда полон.
- переопределить
resizeEvent
и установить ширину каждого столбца себя, когдаQTableWidget
был изменен.
-
чтобы растянуть последнюю колонку:
ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
-
растянуть столбец #n:
ui->tableWidget->horizontalHeader()->setSectionResizeMode(n, 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);