我不知道如何从 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()
