QTableWidget 设置表头排序

QTableWidget 表头排序

一.QTableWidget 打开表头排序

ui->tableWidget->horizontalHeader()->setSortIndicatorShown(true);		//显示排序图标(默认为上下箭头)
ui->tableWidget->horizontalHeader()->setSortIndicator(0,Qt::SortOrder::AscendingOrder);	//设置第0列 升序排序

在这里插入图片描述

二.QTableWidget 修改排序图标的展现方式(修改图标、位置)

通过设置样式表的方法来改变图标:

ui->tableWidget->horizontalHeader()->setStyleSheet("QHeaderView::up-arrow { subcontrol-position: center right; padding-right: 8px;"
                                                   "image: url(:/images/sort_up.png);}"
                                                  "QHeaderView::down-arrow { subcontrol-position: center right; padding-right: 8px;"
                                                   "image: url(:/images/sort_down.png);}");

在这里插入图片描述

三.QTableWidget 表头点击排序

排序通如下函数实现,参考qt助手:

void QTableWidget::sortItems(int column, Qt::SortOrder order = Qt::AscendingOrder)

Sorts all the rows in the table widget based on column and order.

连接表头的信号:QHeaderView *horizontalHeader() const 即可,代码实现如下:

connect(ui->tableWidget->horizontalHeader(),SIGNAL(sectionClicked(int )),this, SLOT(sortTableByCol(int)));

void MainWindow::sortTableByCol(int col)
{
if(sortUpDown)		//sortUpDown为自定义的一个bool变量,表示升序还是降序
    {
        ui->tableWidget->sortItems(col, Qt::AscendingOrder);
        sortUpDown=false;
    }
    else
    {
        ui->tableWidget->sortItems(col, Qt::DescendingOrder);
        sortUpDown=true;
    }
}

四.QTableWidget 字符排序和数字排序

1.如果使用setText()函数对 QTableWidget 的item进行数据设定的话,那么排序方式为字符串排序。
2.如果使用setdata()函数设置数据源的话,那么排序方式可以为数字排序。
参考如下代码:

int index = 1;
for(int i=0; i<ui->tableWidget->rowCount(); i++)
{
    ui->tableWidget->item(i,0)->setData(Qt::DisplayRole,index);		//index 本质为数字,所以调用sortItems()排序函数时,会进行数字排序
    ui->tableWidget->item(i,1)->setText(QString::number(index));	//index转换为字符串送入item,所以调用sortItems()排序函数时,会进行字符串排序
    index += 3;
}
  • 8
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不是很大锅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值