我有一个插入项目的QTreeWidget,用户可以选择一列来对其进行排序。在插入项目时,它们只会附加到末尾,而不是自动完成排序。如果我单击标题以在升序/降序之间切换,它将对当前项目进行排序。
我想我可以调用sortItems()并使用从sortColumn()返回的列,但是我无法看到我是如何看到用户是在进行升序还是降序排序。
我并不担心这个效率,所以我不想等到插入完成然后进行排序。我想要一个实时排序列表。
谢谢!
答案 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()
有了这个,您就知道了用户当前的排序顺序,并且您可以根据此对插入应用排序。