• 7157阅读
  • 0回复

QFileSystemModel 的setNameFilters 怎么不刷新TREEVIEW [复制链接]

上一主题 下一主题
离线vertusd
 
只看楼主 倒序阅读 楼主  发表于: 2010-11-24
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
一个 treeview 绑定了 一个QFileSystemModel,
用户在LINEEDIT里面修改了文本后,我就更新QFileSystemModel的 NameFilters, 但虽然更新了这个NameFilter,但TREEVIEW并没有认为QFileSystemModel有更新,所以TREEVIEW也就没有将新的过滤器应用并刷新,
如果我新建一个MODEL,然后用SETMODEL,这样倒是可以,但每次修改了过滤器,都要再一次新建MODEL,然后恢复上次打开的路径,很是麻烦。
  1. self.connect(self.findEdit, QtCore.SIGNAL("textChanged(const QString&)"),self.dirView.onFilterChanged)
  2.   
  3. class DirView(QtGui.QTreeView):
  4.   def __init__(self, dataSource):
  5.         self.model = QtGui.QFileSystemModel(self)
  6.         self.loadExtensionFilter()
  7.         self.model.setFilter(QDir.AllDirs|QDir.Files | QDir.NoDotAndDotDot)
  8.         self.model.setRootPath("/")
  9.         self.setModel(self.model)
  10.   def onFilterChanged(self,str):
  11.         if str==QString(""):
  12.             self.filterList.clear()
  13.             for ext in self.extFilterList:
  14.                 self.filterList.append(ext)
  15.         else:
  16.             self.filterList.clear()
  17.             for ext in self.extFilterList:
  18.                 self.filterList.append(QString("*"+ str) + ext)
  19.         self.model.setNameFilters(self.filterList)

快速回复
限100 字节
 
上一个 下一个