QFile.open 无法打开资源 qrc 中的文件
Posted
技术标签:
【中文标题】QFile.open 无法打开资源 qrc 中的文件【英文标题】:QFile.open fails to open a file inside resource qrc 【发布时间】:2017-10-30 14:26:03 【问题描述】:我遇到了一个奇怪的问题,QFile.open
无法打开添加到 qrc 资源文件中的文件。我的 qrc 文件是这样的
我正在使用以下代码来读取文件 theme_normal.qss
QFile file(":/styles/theme_normal.qss");
if (file.open(QIODevice::ReadOnly | QIODevice::Text))
QString style(file.readAll());
file.close();
else
QMessageBox::critical(nullptr, "Error", "Error loading style file: " + file.errorString());
我收到以下错误:没有这样的文件或目录
相同的代码(原样)在 Qt 5.7.0 中运行良好。我正面临 Qt 5.9.2 的上述问题。可能是什么原因?
我的示例项目:https://github.com/warunanc/QtFileFromResources
【问题讨论】:
您是否打算使用“/styles”文件夹名称而不仅仅是“styles”? 你尝试过替代语法吗(没关系)... qrc:///styles/theme_normal.qss 我已经在 Qt 5.9.2 中尝试过了,它工作正常。 我建议重新安装 Qt。 @scopchanov 不。我放弃。回到 5.7.0。也许全新安装会起作用。 【参考方案1】:在我的类似情况下,从应用程序目录(系统:Windows 10)中删除所有 Qt DLL 文件并复制新的 DLL 文件后问题得到解决。
我发现在 5.9 中不再有例如 Qt5CLucened.dll。可能的问题出在过时的 Qt5CLucened.dll 文件中
【讨论】:
这很可能是原因。我试试这个【参考方案2】:万一有人有类似情况。
我的环境:ubuntu 16.04 LTS,Qt 5.9.4。
我试过了:
重启系统。
重启 Qt 创建器
清理项目,构建 qmake 并重建项目
已更改 qrc 前缀
去掉qrc的目标文件,重新添加
没有任何帮助。
最后,我删除了 qrc 并添加了一个具有相同名称和相同文件的新 qrc,并删除了 build 文件夹中旧的 qrc_xxx.cpp 和 qrc_xxx.o,它也没有帮助。
但是,我删除qrc并添加一个不同名称的新qrc,这样,旧的qrc命名为res.qrc,新的qrc命名为res1.qrc,然后构建qmake并构建项目,它很好用!!!
我不知道为什么,也许是一些旧的缓存?这需要我很长时间..):
编辑:
我发现原因是如果你在.pro中使用SUBDIRS
并且有两个项目具有相同的名称qrc,你会遇到这个问题。
【讨论】:
以上是关于QFile.open 无法打开资源 qrc 中的文件的主要内容,如果未能解决你的问题,请参考以下文章
当我尝试播放不在 qrc 中的媒体文件时,出现错误“尝试播放无效的 Qt 资源”
PyQt5 图形处理 - Qt Designer创建qrc资源文件引用图片资源实例演示,QTextBrower组件引用图片资源方法展示