使用 QFileSystemModel 或 QAbstractItemModel

问题描述

我正在基于 QTreeView 中的自定义文件浏览器构建一个开源 PySide6 应用程序。 我已经将 QFileSystemModel 子类化以显示带有一些额外数据的自定义列。

现在我的目标是在树视图中显示特定的文件子集(它们可以位于不同的驱动器上)。

为了简化事情,假设我有一个函数

def files_to_display():
    return ['C:\file1','D:\file2','D:\file3']

现在我需要在我的 QTreeView显示这些文件。我尝试使用 QSortFilterProxyModelfilteracceptsRow 过滤掉其他所有内容,并且奏效了。然而,在相对大量的文件上,它非常慢且无法使用。我很确定一个更简单的自定义文件树会更快地工作,因为 afaik QFileSystemModel 跟踪文件夹状态并运行其他我可以没有的额外内容

我不知道如何解决这个问题。 我看到基本上有两种方式:

  1. 不知何故从 QFileSystemModel删除了我不需要的东西。 有了这个解决方案,我不完全明白我是如何做到这一点的。特别是,我如何用我的函数中的数据填充模型?它如何使用 setRootPath

  2. 子类 qabstractitemmodel。 这个解决方案或多或少是清楚的,但是,它缺少一些与 QFileSystemModel 开箱即用的重要内容:我需要列和它提供的数据(名称、大小、类型、修改日期),我还需要用于 QFileIconProvider文件/文件夹图标。

所以基本上我想使用 QFileSystemModel 的轻量级版本,而无需查看文件系统和我的文件列表。

我愿意接受替代解决方案。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)