我想构建一个包含项目的树,这些项目在添加,重命名和执行其他操作时始终在树节点下自动排序。 std :: set似乎是我数据容器的一个很好的候选者。但是,由于通过索引或行号访问,插入或删除树项,因此Qt树似乎支持向量或QList(指针向量)。我正在使用std :: distance like函数来计算集合中项目的索引。但我觉得它很慢(未经测试)。让Qt树模型使用std :: set的任何好方法,或者我可能需要使用向量作为我的数据,还是开发一个新的容器来做它?非常感谢!
找到答案:使用boost::container::flat_set。感谢。
答案 0 :(得分:2)
QSet不是一个好主意。除了不提供基于索引的访问之外,它完全是无序的,即绝对不能保证遍历的顺序。没有明智的方法可以使用Qt项目模型。只使用QList并确保值本身就是唯一的,你会好得多。
答案 1 :(得分:0)
你应该使用QTreeView,并以这种方式子类QAbstractItemModel你可以使用你想要的任何数据源