Skip to main content
 首页 » 编程设计

python之如何在 PySide 的 QTreeView 中隐藏 QFileSystemModel 中的项目

2025年05月04日14wayfarer

我不知道如何从 QFileSystemModel 中隐藏一个项目或一行? 使用 removeRows 后没有任何反应。我也试过了

    self.model.beginRemoveRows(QtCore.QAbstractItemModel.index(), 0, 10) 
    self.model.endRemoveRows() 

没有结果。我该怎么做?

请您参考如下方法:

QFileSystemModel 不遵循删除项的常规函数​​,我猜是因为它具有潜在的破坏性。

您需要为每个调用 self.model.remove(index)。这将永久删除文件。 如果恰好是一个文件夹,您还需要调用 self.model.rmdir(index)。

见 http://doc.qt.io/qt-4.8/qfilesystemmodel.html#remove

如果您只是想隐藏行,那么您可以添加一个过滤器列表,例如["*.cpp", "*.h"] 通过 QFileSystem.setNameFilters ,它使用 QDir::setNameFIlters .

如果您正在做更专业的事情,那么您可以使用QSortFilterProxy。要么直接将它与 QRegExp 一起使用,要么子类化并实现 filterAcceptsRow()