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

PyQt5中QTreeView与QFileSystemModel识别.lnk快捷方式文件问题

解决QFileSystemModel解析.lnk快捷方式为目标路径的问题

核心解决方案:禁用快捷方式解析

QFileSystemModel默认会自动解析Windows下的.lnk快捷方式(视为符号链接),导致filePath()和fileName()返回目标路径而非快捷方式本身。只需调用模型的setResolveSymlinks(False)方法,即可禁用该行为,让模型将.lnk文件当作普通文件处理:

from PyQt5.QtWidgets import QFileSystemModel, QTreeView
from PyQt5.QtWidgets import QApplication
import sys

app = QApplication(sys.argv)
tree_view = QTreeView()

model = QFileSystemModel()
model.setResolveSymlinks(False)  # 禁用快捷方式解析
model.setRootPath("C:/")

tree_view.setModel(model)
tree_view.show()

# 测试获取选中项
def on_selection_changed(selected, deselected):
    indexes = selected.indexes()
    if indexes:
        index = indexes[0]
        file_path = model.filePath(index)
        file_name = model.fileName(index)
        print(f"路径:{file_path},文件名:{file_name}")

tree_view.selectionModel().selectionChanged.connect(on_selection_changed)

sys.exit(app.exec_())

为什么之前的自定义模型无效?

你之前重写flags()方法的思路错误,因为当模型默认解析快捷方式时,self.filePath(index)返回的已经是目标路径(而非.lnk文件本身),所以filePath.endswith('.lnk')永远不会成立,自然无法修改flags。必须先禁用解析,才能让模型识别到.lnk文件本身。

备选方案:自定义模型重写filePath方法

如果需要保留部分解析逻辑,可自定义QFileSystemModel并重写filePath()和fileName()方法,直接获取.lnk文件的原始路径:

from PyQt5.QtWidgets import QFileSystemModel
from PyQt5.QtCore import QModelIndex, Qt

class CustomFileSystemModel(QFileSystemModel):
    def filePath(self, index: QModelIndex) -> str:
        # 获取模型存储的原始未解析路径
        original_path = super().filePath(index)
        # 若为.lnk文件,直接返回原始路径
        if original_path.endswith('.lnk'):
            return original_path
        return super().filePath(index)
    
    def fileName(self, index: QModelIndex) -> str:
        file_info = self.fileInfo(index)
        original_name = file_info.fileName()
        # 若为.lnk文件,返回原始文件名
        if original_name.endswith('.lnk'):
            return original_name
        return super().fileName(index)

# 使用示例
model = CustomFileSystemModel()
model.setRootPath("C:/")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 17:37:39