我正在使用QTreeView和QFileSystemModel类在给定路径下显示文件夹结构。现在,我需要帮助根据文件扩展名自定义树项目的图标(即,如果文件类型为* .png,请设置图标pngIcon.svg或如果文件类型为* .mp4,则将图标设置为mp4Icon.svg。)
这是我的代码和GUI快照。
RenderTarget::draw()
答案 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())