一个 treeview 绑定了 一个QFileSystemModel,
用户在LINEEDIT里面修改了
文本后,我就更新QFileSystemModel的 NameFilters, 但虽然更新了这个NameFilter,但TREEVIEW并
没有认为QFileSystemModel有更新,所以TREEVIEW也就没有将新的过滤器应用并刷新,
如果我新建一个MODEL,然后用SETMODEL,这样倒是可以,但每次修改了过滤器,都要再一次新建MODEL,然后恢复上次打开的
路径,很是麻烦。
- self.connect(self.findEdit, QtCore.SIGNAL("textChanged(const QString&)"),self.dirView.onFilterChanged)
-
- class DirView(QtGui.QTreeView):
- def __init__(self, dataSource):
- self.model = QtGui.QFileSystemModel(self)
- self.loadExtensionFilter()
- self.model.setFilter(QDir.AllDirs|QDir.Files | QDir.NoDotAndDotDot)
- self.model.setRootPath("/")
- self.setModel(self.model)
- def onFilterChanged(self,str):
- if str==QString(""):
- self.filterList.clear()
- for ext in self.extFilterList:
- self.filterList.append(ext)
- else:
- self.filterList.clear()
- for ext in self.extFilterList:
- self.filterList.append(QString("*"+ str) + ext)
- self.model.setNameFilters(self.filterList)