Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Best way to list files in a QFileSystemModel()?

I'm beginning Qt/pySide programming and am trying to implement a simple QListView with QFileSystemModel as the model. I have this working and in addition have defined a name filter on the model. I'd like to get a list of all files in the QListView (or rather the underlying model).

The following code appears to do this, but is incredibly ugly and cannot possibly be the correct way. Help!

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)
like image 489
Lewis Avatar asked Oct 04 '22 11:10

Lewis


1 Answers

That is the correct way of working. The whole idea of the QAbstractItemModel abstraction is to provide a unified API for accessing arbitrary and possibly dynamic data which happen to fit into a list, table or tree presentations. Because this API has to accomodate everything from a simple dummy list of a few strings to the contents of an address book, including the rich contact details, it is inherently complex. Depending on what you want to achieve, using a one-purpose tool might be better in your specific situation.

By the way, the QFileSystemModel is very dynamic in nature (the directory enumeration happens on a separate thread). You won't get meaningful data until the directoryLoaded signal is emited, you have to wait for it. If you are simply looking for a list of files to use in your code, using Python's native facilities might be easier.

like image 90
Jan Kundrát Avatar answered Oct 13 '22 10:10

Jan Kundrát