2013-04-08 17 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的本機功能可能會更容易。

相關問題