2

我遇到了一个奇怪的问题,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

4

2 回答 2

0

万一有人有类似的情况。

我的环境:ubuntu 16.04 LTS,Qt 5.9.4。

我努力了:

  1. 重启系统。

  2. 重新启动 Qt 创建者

  3. 清理项目,构建 qmake 并重建项目

  4. 更改了 qrc 前缀

  5. 删除qrc的目标文件并重新添加

没有帮助。

最后,我删除了 qrc 并添加了一个具有相同名称和相同文件的新 qrc,并删除了 build 文件夹中的旧 qrc_xxx.cpp 和 qrc_xxx.o,它也没有帮助。

但是,我删除了 qrc 并添加了一个不同名称的新 qrc,这样,旧的 qrc 名为 res.qrc 和新的 qrc 名为 res1.qrc,然后构建 qmake 并构建项目,它工作正常!!!

我不知道为什么,也许是一些旧的缓存?我花了很长时间..):

编辑: 我发现原因是如果你SUBDIRS在 .pro 中使用并且有两个项目具有相同的名称 qrc,你会遇到这个麻烦。

于 2019-03-29T09:02:33.227 回答
0

在我的类似情况下,从应用程序目录(系统:Windows 10)中删除所有 Qt DLL 文件并复制新的 DLL 文件后问题得到解决。

我发现在 5.9 中没有更多的 Qt5CLucened.dll 例如。可能的问题出在过时的 Qt5CLucened.dll 文件中

于 2017-11-03T14:32:05.993 回答