2

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

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

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

谢谢!

4

2 回答 2

3

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

treeWidget->header()->sortIndicatorOrder()

有了这个,你就知道了用户当前的排序顺序,你可以根据这个在插入上应用你的排序。

于 2009-04-25T03:12:11.713 回答
2

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

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

Qt 建议不要这样做,因为这会降低性能,并说您应该在所有添加完成后启用排序。希望这可以帮助。

于 2009-04-25T03:03:51.780 回答