0

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

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

为了简化事情想象我有一个功能:

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

现在我需要在我的QTreeView. 我尝试使用QSortFilterProxyModelandfilterAcceptsRow过滤掉其他所有东西,它起作用了。但是,在相对大量的文件上,它非常缓慢且无法使用。我很确定更简单的自定义文件树会运行得更快,因为 afaik 会QFileSystemModel跟踪文件夹状态并运行其他我可以不用的额外内容。

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

  1. 以某种方式从QFileSystemModel. 有了这个解决方案,我不完全理解我是如何做到这一点的。特别是,如何用我的函数中的数据填充模型?它如何使用setRootPath

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

所以基本上我想使用一个轻量级的版本QFileSystemModel而不看文件系统和我的文件列表。

我对替代解决方案持开放态度。

4

0 回答 0