You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyQt6中QTreeView用QStandardItemModel显示白图标而非文件夹图标问题

问题:QStandardItemModel下文件夹图标显示异常

我尝试为目录中的文件夹项添加文件夹图标,同时为关联文件类型添加对应图标,使用的代码如下:

iconProvider = QFileIconProvider()

for item in os.listdir(path):
    QItem = QStandardItem(item)
    file_item_icon = iconProvider.icon(QFileInfo(item))
    QItem.setIcon(file_item_icon)
    root_item.appendRow(QItem)

但QTreeView中的文件夹显示为白色图标,我曾尝试使用QFileSystemModel,它能正确显示图标,但我需要QStandardItemModel提供的自定义控制能力。


解决方案

问题出在创建QFileInfo时仅传入了文件名,未指定完整路径,导致QFileIconProvider无法正确识别项目类型。修改代码,拼接完整路径即可解决:

iconProvider = QFileIconProvider()

for item in os.listdir(path):
    # 拼接文件/文件夹的完整路径
    full_path = os.path.join(path, item)
    QItem = QStandardItem(item)
    file_item_icon = iconProvider.icon(QFileInfo(full_path))
    QItem.setIcon(file_item_icon)
    root_item.appendRow(QItem)

说明

当仅传入文件名给QFileInfo时,它会默认在当前工作目录中查找目标。如果当前工作目录和你遍历的path不一致,QFileInfo无法判断该项目是文件夹还是普通文件,因此QFileIconProvider只能返回默认的白色图标。拼接完整路径后,QFileInfo可以准确识别项目类型,进而获取到对应的系统图标。

内容的提问来源于stack exchange,提问作者Devin Miller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 14:30:16