在QFileSystemModel()中列出文件的最佳方法是什么?

时间:2013-04-08 00:35:16

标签: qt pyside qlistview qfilesystemmodel

我正在开始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 个答案:

答案 0 :(得分:1)

这是正确的工作方式。 QAbstractItemModel抽象的整个想法是提供一个统一的API,用于访问恰好适合列表,表格或树形式的任意和可能的动态数据。因为这个API必须适应从几个字符串的简单虚拟列表到地址簿内容的所有内容,包括丰富的联系人详细信息,所以它本质上很复杂。根据您希望实现的目标,在特定情况下使用专用工具可能会更好。

顺便说一句,QFileSystemModel本质上是非常动态的(目录枚举发生在一个单独的线程上)。在directoryLoaded信号发出之前,您将无法获得有意义的数据,您必须等待它。如果您只是在寻找要在代码中使用的文件列表,那么使用Python的本地工具可能会更容易。