首先要设置tableview大小随窗口大小改变而改变,通过ui文件的布局可进行设置
代码
小窗口图
大窗口图
MainWindow.h
private slots:
void on_pushButton_clicked();
protected:
void resizeEvent(QResizeEvent *event);
MainWindow.cpp
QT5代码
//必须要写这句,这样鼠标移动到tableview里就会执行on_tableView_entered,否则只有点击tabview的时候才会触发
ui->tableView->setMouseTracking(true);
//窗口大小发生改变
void MainWindow::resizeEvent(QResizeEvent *event)
{
//列宽随窗口大小改变而改变,每列平均分配,充满整个表,但是此时列宽不能拖动进行改变
ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
//第四列和第五列适应内容长短分配大小(从0开始计数)
ui->tableView->horizontalHeader()->setSectionResizeMode(4,QHeaderView::ResizeToContents);
ui->tableView->horizontalHeader()->setSectionResizeMode(5,QHeaderView::ResizeToContents);
}
//tableview信号槽
void MainWindow::on_tableView_entered(const QModelIndex &index)
{
//设置列宽可拖动
ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Interactive);
}
QT4代码
//QT4
//列宽随窗口大小改变而改变,每列平均分配,充满整个表,但是此时列宽不能拖动进行改变
ui->tableView->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
//第四列和第五列适应内容长短分配大小(从0开始计数)
ui->tableView->horizontalHeader()->setResizeMode(4,QHeaderView::ResizeToContents);
ui->tableView->horizontalHeader()->setResizeMode(5,QHeaderView::ResizeToContents);