QT tableview列宽随窗口改变

首先要设置tableview大小随窗口大小改变而改变,通过ui文件的布局可进行设置
QT tableview列宽随窗口改变_第1张图片

代码

小窗口图
QT tableview列宽随窗口改变_第2张图片
大窗口图
QT tableview列宽随窗口改变_第3张图片
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);

你可能感兴趣的:(QT)