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