c++ - 在 Qt C++ 中获取嵌入式资源的容器文件

标签 c++ windows qt embedded-resource

此处显示how to get list of files stored in a .qrc Qt Resorce file? .

此解决方案按预期工作,但列表不显示给定条目源自的 .qrc 文件,因为项目包含多个库形式的子项目,每个子项目都有自己的 .qrc文件。

所以,问题是:有没有办法知道获取的列表中的给定资源属于哪个.qrc文件?

我需要此信息让图书馆知道哪些资源可从其本地 .qrc 获得,而不是获取应用程序全局可用的所有资源。

平台信息:Qt 5.6.1,Windows 7 安装 MSVC2013

最佳答案

不,你不能。 qrc文件编译时,原文件名不会合并到编译后的二进制文件中。如果你想让库知道它的本地资源,你应该添加 prefix 到每个带有库标识符的资源文件。有关更多说明,请参阅 Qt Resource System .例如

<!-- resource for mylib01 -->
<!DOCTYPE RCC><RCC version="1.0">
<qresource prefix="mylib01">
    <file>images/copy.png</file>
    <file>images/cut.png</file>
</qresource>
</RCC>


<!-- resource for mylib02 -->
<!DOCTYPE RCC><RCC version="1.0">
<qresource prefix="mylib02">
    <file>images/copy.png</file>
    <file>images/cut.png</file>
    <file>images/new.png</file>
</qresource>
</RCC>

然后每个资源文件将以 :/mylib01/copy.png, :/mylib02/copy.png, ... 当列出资源中的文件时对于特定的库,只需将库标识符与资源文件名进行比较,即可判断是否属于该库。

另一种选择是使用单独的二进制资源,然后使用 QResource 动态加载它.可以通过QResource::fileName()访问编译后的资源文件名.

关于c++ - 在 Qt C++ 中获取嵌入式资源的容器文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44399126/

相关文章:

C++ 编译器看似跳过了一行代码

c++ - 在 C++ 中使用反斜杠定义函数

linux - 无法连接到服务器上的 Sybase ASE 16.0

c# - 枚举所有 "always on top"的窗口

windows - 线程输入队列

qt - 有人可以解释一下 QT 中的大小提示、大小策略、大小限制吗?

c++ - 当前时间作为创建文件的字符串

python - QImage内存泄漏

c++ - 可执行文件无法正常工作 [Linux]

c++ - getline() 如何在指针方面工作?