PyQt:QFileSystemModel复选框过滤器

问题描述 投票:5回答:1

我正在尝试使用python / pyqt创建实用程序,以从QFileSystemModel创建* .tar存档(仅包括已检查的那些项)。现在,我想控制QFileSystemModel复选框以使用fileName / fileType / fileSize进行过滤。

我如何使用文件名/文件类型/文件大小的通配符搜索来选择/取消选中类之外的QFileSystemModel复选框?

class CheckableDirModel(QtGui.QFileSystemModel):
    def __init__(self, parent=None):
        QtGui.QFileSystemModel.__init__(self, None)
        self.checks = {}

    def data(self, index, role=QtCore.Qt.DisplayRole):
        if role != QtCore.Qt.CheckStateRole:
            return QtGui.QFileSystemModel.data(self, index, role)
        else:
            if index.column() == 0:
                return self.checkState(index)

    def flags(self, index):
        return QtGui.QFileSystemModel.flags(self, index) | QtCore.Qt.ItemIsUserCheckable

    def checkState(self, index):
        if index in self.checks:
            return self.checks[index]
        else:
            return QtCore.Qt.Checked

    def setData(self, index, value, role):
        if (role == QtCore.Qt.CheckStateRole and index.column() == 0):
            self.checks[index] = value
            self.emit(QtCore.SIGNAL("dataChanged(QModelIndex,QModelIndex)"), index, index)
            return True 
        return QtGui.QFileSystemModel.setData(self, index, value, role)



    self.dirTreeView = QtGui.QTreeView(self.centralwidget)
    self.dirModel = CheckableDirModel()
    self.dirTreeView.setModel(self.dirModel)

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9QOEhjTC5wbmcifQ==” alt =“在此处查看UI快照”>“ >>

我正在尝试使用python / pyqt创建实用程序,以从QFileSystemModel创建* .tar归档文件(仅包括已检查的那些项)。现在我想控制QFileSystemModel复选框以...

python pyqt filtering qfilesystemmodel
1个回答
0
投票

您的项目copyTar是否开源?我想学习。

© www.soinside.com 2019 - 2024. All rights reserved.