Qt QHeaderView 排序

在使用tableview中有时候会需要列信息按一定的顺序进行排序,如按文件按照名称、修改日期、类型、大小进行排序。
而Qt中则存在着可以通过点击表头来对列表进行排序的方法:
首先,先创建一个简单的tableview表格:

void CHeaderWidget::propertyModel()
{
    m_model->setColumnCount(2);//设置2列
    m_model->setHeaderData(0, Qt::Horizontal, QString::fromLocal8Bit("第一列"));
    m_model->setHeaderData(1, Qt::Horizontal, QString::fromLocal8Bit("第二列"));
    m_model->setRowCount(5);//设置5行
    m_tableView->setModel(m_model);
    //设置成灰白交替形式显示
    m_tableView->setAlternatingRowColors(true);
//每个格子显示的内容
    m_model->setItem(0, 0, new QStandardItem(QString::fromLocal8Bit("NO.1")));
    m_model->setItem(1, 0, new QStandardItem(QString::fromLocal8Bit("NO.2")));
    m_model->setItem(2, 0, new QStandardItem(QString::fromLocal8Bit("NO.7")));
    m_model->setItem(3, 0, new QStandardItem(QString::fromLocal8Bit("NO.4")));
    m_model->setItem(4, 0, new QStandardItem(QString::fromLocal8Bit("NO.31")));

    m_model->setItem(0, 1, new QStandardItem(QString::fromLocal8Bit("1")));
    m_model->setItem(1, 1, new QStandardItem(QString::fromLocal8Bit("2")));
    m_model->setItem(2, 1, new QStandardItem(QString::fromLocal8Bit("3")));
    m_model->setItem(3, 1, new QStandardItem(QString::fromLocal8Bit("4")));
    m_model->setItem(4, 1, new QStandardItem(QString::fromLocal8Bit("5")));
    //隐藏行表头。
    m_tableView ->verticalHeader()->hide();
}

在构造函数中设置排序:

CHeaderWidget::CHeaderWidget(QWidget *parent)
    : QWidget(parent)
{
    this->resize(500,500);
    m_model = new QStandardItemModel(this);
    m_tableView = new QTableView(this);
    propertyModel();
    //以下则为排序的方式
    QSortFilterProxyModel *pProxyModel = new QSortFilterProxyModel(this);
    // 设置数据源模型
    pProxyModel->setSourceModel(m_model);
    m_tableView->setModel(pProxyModel);
    // 设置为可排序
    m_tableView->setSortingEnabled(true);
    // 按照文件名升序形式排序
    m_tableView->sortByColumn(i,Qt::AscendingOrder);
}

结果如图显示:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值