在 QFileSystemModel() 中列出文件的最佳方法?
Posted
技术标签:
【中文标题】在 QFileSystemModel() 中列出文件的最佳方法?【英文标题】:Best way to list files in a QFileSystemModel()? 【发布时间】:2013-04-08 00:35:15 【问题描述】:我正在开始 Qt/pySide 编程,并试图以 QFileSystemModel 作为模型来实现一个简单的 QListView。我有这个工作,另外在模型上定义了一个名称过滤器。我想获取 QListView(或更确切地说是底层模型)中所有文件的列表。
下面的代码似乎可以做到这一点,但是非常丑陋,不可能是正确的方法。救命!
model = myQListView.model()
idx = model.index(model.rootPath())
for i in range(0, model.rowCount(idx)):
child = idx.child(i, idx.column())
print model.fileName(child)
【问题讨论】:
【参考方案1】:这是正确的工作方式。 QAbstractItemModel
抽象的整个想法是提供一个统一的 API,用于访问恰好适合列表、表格或树表示的任意和可能的动态数据。因为这个 API 必须容纳从几个字符串的简单虚拟列表到地址簿的内容(包括丰富的联系方式)的所有内容,所以它本质上是复杂的。根据您想要实现的目标,在您的特定情况下使用单一用途的工具可能会更好。
顺便说一句,QFileSystemModel
本质上是非常动态的(目录枚举发生在单独的线程上)。在发出directoryLoaded
信号之前,您不会获得有意义的数据,您必须等待它。如果您只是在代码中查找要使用的文件列表,则使用 Python 的本机工具可能会更容易。
【讨论】:
以上是关于在 QFileSystemModel() 中列出文件的最佳方法?的主要内容,如果未能解决你的问题,请参考以下文章
在 QFileSystemModel 中查找第 n 个文件/文件夹
在 PySide 中使用 QFileSystemModel,从索引中获取项目
在一个 QFileSystemModel 上应用两个 FileFilterProxyModel