如何为QTreeView项后缀设置自定义图标

时间:2019-06-08 17:08:23

标签: python qtreeview pyside2 qfilesystemmodel

我正在使用QTreeView和QFileSystemModel类在给定路径下显示文件夹结构。现在,我需要帮助根据文件扩展名自定义树项目的图标(即,如果文件类型为* .png,请设置图标pngIcon.svg或如果文件类型为* .mp4,则将图标设置为mp4Icon.svg。)

这是我的代码和GUI快照。

RenderTarget::draw()

enter image description here

1 个答案:

答案 0 :(得分:1)

您必须对QFileSystemModel使用QFileIconProvider,并覆盖方法图标:

import os
current_dir =os.path.dirname(os.path.realpath(__file__))

class FileIconProvider(QtWidgets.QFileIconProvider):
    def icon(self, parameter):
        if isinstance(parameter, QtCore.QFileInfo):
            info = parameter
            if info.suffix() == "png":
                return QtGui.QIcon(os.path.join(current_dir, "pngIcon.svg"))
            elif info.suffix() == "mp4":
                return QtGui.QIcon(os.path.join(current_dir, "mp4Icon.svg"))
        return super(FileIconProvider, self).icon(parameter)
iModel = QtWidgets.QFileSystemModel()
iModel.setIconProvider(FileIconProvider())
iModel.setRootPath(QtCore.QDir.rootPath())