我遇到的情况是我有一个数据表,也可以将其视为树。具体来说,这是一个字母顺序的项目列表,我希望用户能够在具有单个长列表项的表格视图之间切换,或者是在对象名为“ A”,“ B”的文件夹中组织对象的树状视图,“ C”等。

我对Qt很有经验,并且QSortFilterProxyModel似乎是正确的方法,但是当源中没有相应的索引时,尚不清楚mapToSource应该如何工作。这些项目本身都将在源模型中具有相应的索引,但是“ A”,“ B”,“ C”等项目则没有。该文档对此没有任何说明。我唯一的猜测是在这种情况下mapToSource应该返回一个无效的QModelIndex,但没有说明。如果那是无效的,那么我看不到有任何使用QSortFilterProxyModel的方法。

有没有人这样做并且知道该怎么办?

最佳答案

文档没有多说,因为这取决于您。模型可以完全控制哪些数据可供其用户使用。仅仅因为它是代理并不重要。您将需要动态合成“文件夹”,并遵照代理的基本实现中的其他项目。您只想将聚合功能添加到排序代理中,即让QSortFilterProxyModel的代码处理排序,然后在其上添加一个小的填充程序即可添加父文件夹项。

07-25 21:46