Qt的 QTableWidget 和 QTreeWidget 对item的排序,一直都存在一个问题,例如有三个item,text分别为1、3、15,排序的结果必然为1、15、3,这样不是我们想要的结果,所以需要通过重载QTreeWidgetItem的 operator< 函数,改变排序比较的方式,达到我们想要的效果。
.h文件
<span style="font-family:Verdana;font-size:12px;">
class CTreeWidgetItemEx : public QTreeWidgetItem
{
public:
explicit CTreeWidgetItemEx(QTreeWidgetItem * parent = 0, int type = QTreeWidgetItem::Type);
~CTreeWidgetItemEx();
bool operator<(const QTreeWidgetItem & other) const;
};
</span>
.cpp文件
<span style="font-family:Verdana;font-size:12px;">
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);
}
</span>