使用QSortFilterProxyModel将表转换为树

时间:2018-08-03 01:00:46

标签: c++ qt

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

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

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

1 个答案:

答案 0 :(得分:1)

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