在 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 个文件/文件夹

编译QFileSystemModel

在 PySide 中使用 QFileSystemModel,从索引中获取项目

在一个 QFileSystemModel 上应用两个 FileFilterProxyModel

如何删除 QFileSystemModel 中修改的大小、类型、日期?

如何在 Qt 中使用 QFileSystemModel 设置文本颜色 QTableView?