对QAbstractProxyModel进行子类化,添加源模型中不存在的树节点

问题描述 投票:1回答:2

我正在尝试实现一个ProxyModel,它采用一个源模型来表示一个扁平的,类似于表的结构。然后,您可以选择此模型的一列作为分组值。然后,代理模型应创建与此列的不同值一样多的顶级节点,并将基础行排序到它们中。

但是,在这样做的时候,将QAbstractProxyModel子类化成一个可行的选择吗?由于mapToSource(const QModelIndex& proxyIndex)不会始终返回有效代理索引的有效源索引。

有人有更好的解决方案,也许只使用没有内置代理功能的QAbstractItemModel

c++ qt qabstractitemmodel
2个回答
1
投票

以下是两个解决此问题的示例项目,供任何人未来参考。 (其中一个是我的,我不是指垃圾邮件,它似乎相关。)

GroupedItemsProxyModeldocQGroupingProxyModeldoc

编辑(对评论的回应):我相信这两个项目都会实现问题。我认为检查源代码提供了最好的示例,显然太长了,无法将其全部粘贴到此处。我直接提供了源代码和相关文档的链接。


0
投票

更新:对不起,明白这有点不对劲。我从来没有从抽象代理模型派生,所以我不确定。但是我会开始使用QSortFilterProxyModel。可能会发生它有一些你不需要的功能,但这并没有伤害。另一方面,实现您的代理模型可能会受到伤害,因为它需要额外的工作和技术诀窍。

如果在代理模型中从非分组结构切换到分组结构时遇到问题,请考虑切换视图模型(一个显示分组数据,一个显示原始未分组数据)。

© www.soinside.com 2019 - 2024. All rights reserved.