QT 5.4,无法从代码访问资源
QT 5.4, Unable to access Resource from code
我尝试将我的应用程序的样式图像包含在 q-resource 文件中。当我直接将文件包含在代码中时,它可以工作,但是当我尝试使用 QResource 时,它失败了(不加载文件)。
我在主目录中有资源文件:
AppFolder
|- main.cpp
|- darkstyle.qrc
|- darkstyle
|- WindowTitleBar.png
以下示例打印:失败1失败2
#include <QApplication>
#include <QResource>
#include <Qfile>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
bool ok= QResource::registerResource("darkstyle.qrc");
if (!ok) qDebug()<<"failed1";
QFile file(":/darkstyle/WindowTitleBar.png");
//QFile file("../AppFolder/darkstyle/WindowTitleBar.png"); //that work
if(!file.open(QFile::ReadOnly | QFile::Text)) qDebug()<<"failed2";
else file.close();
//return a.exec();
return 0;
}
注意:Qt创建者默认在顶级文件夹中创建二进制文件(.exe):../build-AppFolder_Qt_5_4_1_MSVC2013_64bit-debug/debug/AppFolder.exe执行根路径似乎是:../build-AppFolder_Qt_5_4_1_MSVC2013_64bit-debug
我尝试了大多数可能的组合与执行路径。
注意2:有些例子使用.rcc文件格式,我没有这些,但这可能是一个线索。
总结:如何从 QT 应用程序内部访问 QResource 文件?
编辑1:qrc文件的内容:
<RCC>
<qresource prefix="/">
<file>darkstyle/WindowTitleBar.png</file>
<file>darkstyle/WindowTitleButton.png</file>
<file>darkstyle/WindowTitleButton1.png</file>
<file>darkstyle/WindowTitleButton2.png</file>
<file>darkstyle/WindowTitleButton3.png</file>
</qresource>
</RCC>
QResource::registerResource("darkstyle.qrc") 注册资源描述。如果要像这样动态使用资源,则需要注册已编译的资源本身。运行 rcc -binary darkstyle.qrc -o darkstyle.rcc 并使用 QResource::registerResource("darkstyle.rcc")
或者,直接将资源编译到二进制文件中。这样做,在你的.qrc中使用RESOURCES += darkstyle.qrc,并省略QResource::registerResource。
该问题与
给定版本的 QT 与MSVS2013不兼容有关。通过下载另一个版本的QT或Visual Studio可以解决这个问题。
相关文章:
- 为什么示例代码访问IUnknown中已删除的内存
- 如何使用 gcc 内联汇编器代码访问成员变量
- 在链接的程序集文件中,我想从 c++ 调用代码访问变量.是否可以在不触发访问冲突的情况下执行此操作?
- 使用MySQL C 连接器从C 代码访问MEMSQL
- 无法从C 代码访问C共享库方法
- 是否可以将匿名 lambda 函数绑定到对象以允许 lambda 中的代码访问对象的成员?
- 从本地代码访问apk中的压缩文件(从zip中读取zip)
- Unity 3D:从 C/C++ 代码访问 Unity 3D API
- Xcode c++ 无法通过代码访问文件
- 使用终止进程终止"mstsc.exe"进程时出现错误代码(5)访问被拒绝
- QT 5.4,无法从代码访问资源
- 为什么此代码访问向量超出其范围
- 使本机代码访问java方法和数据成员
- Dll 通过 excel 从 c++ 代码访问
- 通过静态变量从本机代码访问有状态托管对象
- 从标准C++代码访问iPhone的沙盒文档文件夹
- 从代码访问iOS设置
- <canvas> 从 NaCl 代码访问 HTML5
- 从 QT 中的C++代码访问 QML 元素
- 从非托管C++代码访问 WPF