【问题标题】:How to let Qt Tree model work with QSet?如何让 Qt Tree 模型与 QSet 一起工作?
【发布时间】:2013-01-02 15:19:03
【问题描述】:

我想构建一棵树,其中的项目在添加、重命名和执行其他操作时始终自动排序在树节点下。 std::set 似乎是我的数据容器的不错选择。但是,Qt 树似乎更喜欢向量或 QList(指针向量),因为树项是通过它们的索引或行号访问、插入或删除的。我正在使用类似 std::distance 的函数来计算集合中某个项目的索引。但我认为它很慢(未经测试)。让 Qt 树模型与 std::set 一起工作的任何好方法,或者我可能需要为我的数据使用向量,或者开发一个新容器来做到这一点?非常感谢!

寻找答案:使用boost::container::flat_set。谢谢。

【问题讨论】:

    标签: c++ qt vector set treemodel


    【解决方案1】:

    QSet 不是一个好主意。除了不提供基于索引的访问之外,它是完全无序的,即绝对不能保证遍历的顺序。没有任何明智的方法可以与 Qt 项目模型一起使用。最好只使用 QList 并确保自己的值是唯一的。

    【讨论】:

    • 我以为 QSet 就像 std::set。但事实并非如此。谢谢你的笔记。
    • @user1899020:但即使std::set 也不支持索引,对吧?除了提供“弱”排序之外,情况似乎没有太大不同。
    【解决方案2】:

    您可能应该使用 QTreeView 和子类 QAbstractItemModel 这样您就可以使用任何您想要的数据源

    看到这个问题:Creating Qt models for tree views

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-02
      • 1970-01-01
      • 2017-06-25
      • 2020-12-13
      相关资源
      最近更新 更多