[英]QFileDialog filter unknown file types only
看起来您必须为此使用代理模型,因为名称过滤器使用通配符匹配(它不支持像!(*.*)
这样的否定模式),并且mime-filters似乎无法识别任何类型“未知”文件类型。
下面是一个使用QSortFilterProxyModel的工作解决方案。 filterAcceptsRow
的逻辑只允许通过所有目录和任何没有点的文件,但您可以根据需要轻松调整它。 (要获得有关文件的更多详细信息,您可以使用例如info = model.fileInfo(index)
来获取QFileInfo对象)。
from PyQt5 import QtCore, QtGui, QtWidgets
class ProxyModel(QtCore.QSortFilterProxyModel):
def filterAcceptsRow(self, source_row, source_parent):
model = self.sourceModel()
index = model.index(source_row, 0, source_parent)
return model.isDir(index) or '.' not in model.fileName(index)
def sort(self, column, order):
self.sourceModel().sort(column, order)
app = QtWidgets.QApplication(['Test'])
dialog = QtWidgets.QFileDialog()
dialog.setFileMode(QtWidgets.QFileDialog.ExistingFiles)
dialog.setWindowTitle('Choose Files')
dialog.setProxyModel(ProxyModel())
dialog.exec()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.