5

我正在开始 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)
4

1 回答 1

4

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

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

于 2013-04-08T09:40:20.583 回答