QTreeWidget 按数值排序

xiaoxiao2021-02-28  4

1.使用setData设置数值型值

添加数据时,使用setData来设置数据:

void QTreeWidgetItem::setData(int column, int role, const QVariant & value);

这样点击排序的时候,将是两个QVariant 的比较,QVariant 对各种基础类型的比较都有重载。 比如:

pTreeWidgetItem->setData(0,Qt::DisplayRole,30); pTreeWidgetItem1->setData(0,Qt::DisplayRole,5);

这样排序的时候就是按照数字排序而不是字符串排序。

2.重载QTreeWidgetItem operator< 解决排序问题

class CTreeWidgetItemEx : public QTreeWidgetItem { public: explicit CTreeWidgetItemEx(QTreeWidgetItem * parent = 0, int type = QTreeWidgetItem::Type); ~CTreeWidgetItemEx(); bool operator<(const QTreeWidgetItem & other) const; }; CTreeWidgetItemEx::CTreeWidgetItemEx(QTreeWidgetItem * parent /*= 0*/, int type /*= QTreeWidgetItem::Type*/) : QTreeWidgetItem(parent, type) { } CTreeWidgetItemEx::~CTreeWidgetItemEx() { } bool CTreeWidgetItemEx::operator<(const QTreeWidgetItem & other) const { unsigned int a = this->text(0).toUInt(); unsigned int b = other.text(0).toUInt(); return (a < b); }

参考文章: http://www.cnblogs.com/daidaigua/archive/2012/04/18/2455399.html http://blog.csdn.net/zhango5/article/details/52582915

转载请注明原文地址: https://www.6miu.com/read-250269.html

最新回复(0)