Gia*_*rlo 6 linux sorting qt qtreewidget qtreewidgetitem
我有一个QTreeWidget,列中填充了一些数字,我该如何对它们进行排序?
如果我使用setSortingEnabled(true); 我只能正确排序字符串,所以我的列被排序:
1 10 100 2 20 200
但这不是我想要的!建议?
您可以按这样排序覆盖<运算符和更改排序控制.
class TreeWidgetItem : public QTreeWidgetItem {
public:
TreeWidgetItem(QTreeWidget* parent):QTreeWidgetItem(parent){}
private:
bool operator<(const QTreeWidgetItem &other)const {
int column = treeWidget()->sortColumn();
return text(column).toLower() < other.text(column).toLower();
}
};
Run Code Online (Sandbox Code Playgroud)
在这个例子中,它忽略了真实的情况,面对小写模式的字段.
这是一个使用 pyQt 的实现 __lt__
class TreeWidgetItem(QtGui.QTreeWidgetItem):
def __init__(self, parent=None):
QtGui.QTreeWidgetItem.__init__(self, parent)
def __lt__(self, otherItem):
column = self.treeWidget().sortColumn()
return self.text(column).toLower() < otherItem.text(column).toLower()
Run Code Online (Sandbox Code Playgroud)