【问题标题】:Automatically sorting on insert in QTreeWidget在 QTreeWidget 中插入时自动排序
【发布时间】:2009-04-25 02:15:05
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

    标签: c++ qt sorting qtreewidget


    【解决方案1】:

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

    treeWidget->header()->sortIndicatorOrder()
    

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

    【讨论】:

    • 谢谢,我想我只是忽略了这个功能。它现在正在工作。
    【解决方案2】:

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

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

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

    【讨论】:

    • +1 用于指出插入排序时的迟缓。请注意,如果您一次只添加一项而不是批量添加,这并不重要。
    猜你喜欢
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    相关资源
    最近更新 更多