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

时间:2017-06-06 20:19:34

标签: c++ windows qt embedded-resource

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

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

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

我需要这些信息,以使库知道哪些资源可从其本地.qrc获得,而不是获取所有可用于应用程序的全局资源。

平台信息:在Windows 7上安装了MSVC2013的Qt 5.6.1

1 个答案:

答案 0 :(得分:1)

不,你不能。编译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()访问已编译的资源文件名。