QTreeWidget对节点的排序问题

QTreeWidget自带一个默认的排序函数:

sortItems(column, Qt::SortOrder);

column是,要排序的列,Qt::SortOrder是排序方式,有两种可选:

1、AscendingOrder:正序(升序);

2、DescendingOrder:倒序(降序);

但是这种默认的排序是跟column列的数据类型是有关的,举两个例子:

例子1:

for (int i = 0; i < 11; i++)
{
    QTreeWidgetItem *pNode = new QTreeWidgetItem();
    
    pNode->setText(0, QString::number(i + 1));

    ui->treeWidget->addTopLevelItem(pNode);
}

ui->treeWidet->sortItems(0, Qt::SortOrder::AscendingOrder);

在treeWidget中添加11个根节点,以数字1-11分别对其命名,然后进行升序排序,排序完的结果由上而下为:1,10,11,2,3,4,5,6,7,8,9。

例子2:

for (int i = 0; i < 11; i++)
{
    QTreeWidgetItem *pNode = new QTreeWidgetItem();
    
    pNode->setData(0, Qt::DisplayRole, i + 1);

    ui->treeWidget->addTopLevelItem(pNode);
}

ui->treeWidet->sortItems(0, Qt::SortOrder::AscendingOrder);

同样是添加11个根节点,以数字1-11分别对其命名,然后进行生序排序,这样排序完的结果,由上而下为:1,2,3,4,5,6,7,8,9,10,11。

通过对比可以知道,例子1中,对其命名时,用的字符串,而例子2中用的是数字。

所以,当在用字符串时,QTreeWidget排序时,会按照字符串的大小比较规则来进行排序,而当用数字时,则会使用数字的大小比较规则来进行排序。

当然还有一种方法可以实现自定义排序,那就是重载操作符,具体代码网上有很多,就不举例子了。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值