关于QTableView表头美化、对齐的问题

经常操作QTableView,遇到表头无法对齐所在容器的情况,如下图所示:

这里写图片描述

,当表头不能和QTableView控件宽度一致时,及其影响美观。

解决办法

在QTableView里

ui->tableView->horizontalHeader()->setStretchLastSection(true)

可以让最后一列填充整个表头:
效果如下:

这里写图片描述

另外均分填充表头采用

    ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

这里写图片描述

程序部分代码参考

设置相关代码如下:

void Widget::Init()
{
    QStringList strHeader;
    strHeader << "name"
              << "age"
              << "sex";

    if(NULL == m_model)
    {
        m_model = new QStandardItemModel();
    }

    //添加表头数据
    m_model->setHorizontalHeaderLabels(strHeader);
    //设置列数
    m_model->setColumnCount(strHeader.size());
    //设置行数
    m_model->setRowCount(2);
    //隐藏列表头
    ui->tableView->verticalHeader()->hide();

    //setModel
    ui->tableView->setModel(m_model);

    //表头qss设置
    QString strHeaderQss;
    strHeaderQss = "QHeaderView::section { background:green; color:white;min-height:3em;}";
    ui->tableView->setStyleSheet(strHeaderQss);

    //表头设置最后一列数据填充整个控件
    ui->tableView->horizontalHeader()->setStretchLastSection(true);

    //表头内容均分填充整个控件
    ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
}

工程路径:

https://github.com/lesliefish/Qt/tree/master/UI/QTableView/QTableView
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐