[PyQt] QTreeView filtering with QSortFilterProxyModel

JediAce wesleylulee at gmail.com
Fri Mar 4 22:52:35 GMT 2011

Hi Everyone

So I'm trying to filter a QFileSystemModel using QSortFilterProxyModel and
displaying it with QTreeView. The filtering works fine, however, I'm having
trouble setting the root index to the folder I want. To set the root index
for QTreeView, I use:


after some debugging I realized that the index outputted by

someFIlterProxyModel.mapFromSource(indexFromSource) is invalid. Here is some
sample code:

154         # Add file browser
155         model = QFileSystemModel()
156         testDir = QString(dir)
157         model.setRootPath(testDir)
158         self._fsModel = model
159         self._treeView = QTreeView()
161         if self.selectedFileFilter == 'All Files':
162             self._treeView.setModel(model)
163             self._treeView.setRootIndex(model.index(testDir))
164         else:
165             filteredModel = FileSystemFilter()
166             filteredModel.setSourceModel(self._fsModel)
167             ext = self.selectedFileFilter.split(' ')[0]
168             pattern = '*' + ext
169             print 'pattern: %s' % pattern
171             filteredModel.setFilterWildcard(QString('*.spy'))
172             filteredModel.setDynamicSortFilter(True)
175             self._treeView.setModel(filteredModel)
176             print 'model index is valid: %s' %
177             print 'proxy index is valid: %s' %

Sorry the lines are off. I deleted some comments. Does anyone know why this
is happening? Is this a known bug? Thanks.

View this message in context: http://old.nabble.com/QTreeView-filtering-with-QSortFilterProxyModel-tp31062355p31062355.html
Sent from the PyQt mailing list archive at Nabble.com.

More information about the PyQt mailing list