2013-04-08 70 views
3

我开始Qt/pySide编程,并试图用QFileSystemModel作为模型实现一个简单的QListView。我有这个工作,并且还在模型上定义了一个名称过滤器。我想获得QListView中所有文件的列表(或者更确切地说是底层模型)。在QFileSystemModel()中列出文件的最佳方法?

下面的代码出现要做到这一点,但是令人难以置信的丑陋,不可能是正确的方式。帮帮我!

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的本机功能可能会更容易。