Qt WinRT Originate Error - 0x40080201:QFileSystemModel异常求助
嘿,我来帮你排查这个QFileSystemModel搭配QTreeView的问题——全新项目都出问题,肯定是基础写法或者环境的坑,先从你给出的代码片段里找最明显的问题:
首先,你写的路径"C:\Users\Comp\Deskt..."有致命问题!在C++字符串里,反斜杠\是转义字符,直接这么写会让编译器把\U、\C当成转义序列解析,要么编译报错,要么运行时QFileSystemModel根本找不到正确的目录,这绝对是那28条错误的核心源头之一。
接下来给你整理几个必须修复的点,按顺序试:
修复路径写法:把路径里的反斜杠改成双反斜杠
\\,或者直接用正斜杠/(Qt会自动处理跨平台路径),也可以用Qt提供的跨平台路径API避免硬编码:// 双反斜杠写法 model->setRootPath("C:\\Users\\Comp\\Desktop"); // 更简洁的正斜杠写法 model->setRootPath("C:/Users/Comp/Desktop"); // 跨平台用户目录API,推荐使用 model->setRootPath(QDir::homePath());给QTreeView关联模型:你代码里没写把model绑定到treeView的逻辑,这步不做的话,视图根本没法渲染,还可能触发Qt内部的警告:
ui->treeView->setModel(model); // 可选:让视图自动定位到你设置的根目录 ui->treeView->setRootIndex(model->index(model->rootPath()));给模型设置父对象:如果new model的时候没传父对象(比如
new QFileSystemModel()而不是new QFileSystemModel(this)),虽然不会直接报错,但会导致内存泄漏,某些场景下还会引发Qt的资源警告:QFileSystemModel *model = new QFileSystemModel(this);检查目录权限:如果你的程序没有访问目标目录的权限(比如用户目录被加密,或者程序以管理员身份运行导致权限隔离),QFileSystemModel会抛出一堆权限相关的错误。可以先换成公共目录测试,比如
"C:\\",看看错误会不会消失。
如果做完这些还是有问题,一定要把完整的错误信息贴出来——比如是编译错误还是运行时的警告?错误提示里有没有关键词(比如QFileSystemWatcher、permission denied之类的),这样能更精准定位。
内容的提问来源于stack exchange,提问作者Xesiius

