Qt 资源系统(Qt Resource System)

1. Qt Resource System是什么?

        Qt 资源系统(Qt Resource System)是一种将图片、数据存储在二进制文件中的一套系统。构建应用程序需要的不仅仅是代码。通常你的界面会需要图标来做动作,你可能想要添加插图或品牌标识,或者你的应用程序可能需要加载数据文件来预填充小部件。这些数据文件与应用程序的源代码是分开的,但最终需要将其打包和分发,以便其工作。

        应用程序一些分散的数据文件是导致问题的常见原因。如果引用带有路径的数据文件,应用程序将无法正常工作,除非目标计算机上有完全相同的路径。当打包跨平台(Windows、macOS和Linux)应用程序时,这可能会变得更加棘手。

        Qt 资源系统是独立于平台的,因为无论是图片还是翻译文件等,都会被打包成二进制数据。你可以将这些二进制数据保存到可执行文件中,即“静态加载资源”;你也可以将这些二进制数据单独保存在一个文件中,即“动态加载资源”。

2. qcr文件-Qt资源配置文件

        qrc 文件是基于 XML 格式的资源系统配置文件,该文件中指定了各种资源的信息。

        指定的路径是 .qrc 文件所在目录的相对路径。注意: 列出的资源文件必须位于 .qrc 文件所在目录或者其子目录下。图标文件需要与qrc文件位于同一目录下或者在该目录的子目录。

        完整的将资源文件打包成二进制数据的流程是:写 qrc 文件 -> 用 rcc 编译 -> 二进制数据

2.1如何写 qrc 文件

有两种方式:本节重点介绍用 Qt Creator 写 qrc 文件。

  • 用 Qt Creator 写。
  • 纯手工写。

        1)在项目中添加 Qt Resource File,给资源文件起个名即可创建出一个空的 qrc 文件。此时文件中还没有资源信息,只有两行简单的标识符。(使用普通文本编辑器打开)

Qt 资源系统(Qt Resource System)_第1张图片

Qt 资源系统(Qt Resource System)_第2张图片

        2)使用资源编辑器打开qrc文件,首先添加前缀,再添加资源文件。保存效果如下:

Qt 资源系统(Qt Resource System)_第3张图片

Qt 资源系统(Qt Resource System)_第4张图片

Qt 资源系统(Qt Resource System)_第5张图片

实例:

Qt 资源系统(Qt Resource System)_第6张图片

2.2两种资源路径

假设已经加载好资源,访问这些资源的两种方式是:

  • 文件路径「:/images/about.png」
  • URL「qrc:///images/about.png」

3. 如何加载资源

        加载资源有两种,一种是直接将资源数据存储在可执行文件中(静态方式),另一种是将资源数据存储在单独的二进制文件中并由可执行文件调用(动态方式)。

3.1静态方式加载

        1)除了用 Qt Creator 在工程中添加 qrc 文件以外,需要在 pro 文件中加入 qrc 文件以便 qmake 能识别资源文件,一般这步会被自动添加。例如:

RESOURCES = resource.qrc  

        2)qmake 编译后会生成一个名为 qrc_main.cpp 的文件(qrc_ + qrc文件名),打开它我们会看到刚才我们的资源已经以静态数组的形式保存在了该文件中。最终该文件的数据会存入可执行文件中。

3.2 动态方式

        动态方式不需要写 pro 文件,需要手动用 rcc 工具编译 qrc 文件,然后用 QResource 类加载。备注:rcc 工具的使用请参考官方文档“Resource Compiler (rcc)”。

        1)手动用 rcc 工具编译 qrc 文件。

rcc -binary resource.qrc -o resource.rcc 

        2)在程序中使用 QResource 类加载。

QResource::registerResource("/path/resource.rcc");

其他:

        qrc文件的格式基于XML。因此,您可以使用XML样式进行注释:

你可能感兴趣的:(Qt,qt,qrc)