此处显示how to get list of files stored in a .qrc Qt Resorce file?。
此解决方案按预期工作,但列表未显示给定条目源自的.qrc文件,如项目包含多个库形式的子项目,每个子项目都有自己的.qrc文件。
所以,问题是:有没有办法知道获取列表中给定资源属于哪个.qrc文件?
我需要这些信息,以使库知道哪些资源可从其本地.qrc获得,而不是获取所有可用于应用程序的全局资源。
平台信息:在Windows 7上安装了MSVC2013的Qt 5.6.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()
访问已编译的资源文件名。