相关文章推荐
唠叨的鸵鸟  ·  PROC相关-CSDN博客·  2 周前    · 
有腹肌的香烟  ·  Python ...·  8 月前    · 
追风的炒粉  ·  android 与C# UDP通信 - ...·  11 月前    · 
直爽的乒乓球  ·  Android 源码 ...·  1 年前    · 

使用QFileSystemModel或QAbstractItemModel在QTreeView中显示自定义文件列表

0 人关注

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

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

为了简化事情,想象一下,我有一个函数。

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

现在我需要在我的QTreeView中显示这些文件。我试着用QSortFilterProxyModelfilterAcceptsRow来过滤掉其他的东西,结果成功了。然而,在相对较多的文件中,它的速度非常慢,无法使用。我很确定一个更简单的自定义文件树会工作得更快,因为据说QFileSystemModel会跟踪文件夹状态并运行其他额外的东西,我可以不用这些东西。

我不确定如何解决这个问题。 我看到基本上有2种方法。

  • 以某种方式从QFileSystemModel中剪掉我不需要的东西。 对于这个解决方案,我并不完全理解我是如何做到这一点的。特别是,我如何用我的函数中的数据填充模型?它如何使用setRootPath

  • 子类QAbstractItemModel

  •