在QTreeWidget中自动排序插入

时间:2009-04-25 02:15:06

标签: c++ qt sorting qtreewidget

我有一个插入项目的QTreeWidget,用户可以选择一列来对其进行排序。在插入项目时,它们只会附加到末尾,而不是自动完成排序。如果我单击标题以在升序/降序之间切换,它将对当前项目进行排序。

我想我可以调用sortItems()并使用从sortColumn()返回的列,但是我无法看到我是如何看到用户是在进行升序还是降序排序。

我并不担心这个效率,所以我不想等到插入完成然后进行排序。我想要一个实时排序列表。

谢谢!

2 个答案:

答案 0 :(得分:2)

我没有测试设置,但根据文档,这会导致在插入项目时进行排序。

...
treeWidget.sortByColumn(0, Qt::AscendingOrder); // column/order to sort by
treeWidget.setSortingEnabled(true);             // should cause sort on add

Qt建议不要这样做,因为会有性能成本,并且说你应该在所有添加完成后设置排序。希望这会有所帮助。

答案 1 :(得分:2)

如果您的树窗口小部件被称为treeWidget,您应该能够调用header()方法,该方法来自QTreeWidget的父QTreeView,然后是来自QHeaderView类的sortIndicatorOrder():

treeWidget->header()->sortIndicatorOrder()

有了这个,您就知道了用户当前的排序顺序,并且您可以根据此对插入应用排序。