Qt 资源文件利用率

Posted

技术标签:

【中文标题】Qt 资源文件利用率【英文标题】:Qt Resource file utilization 【发布时间】:2011-06-11 04:48:37 【问题描述】:

我在这里描述了我在使用 Qt 资源 .rcc 文件时遇到的问题。

首先,当我在我的项目中创建 .qrc 文件时,它将适合添加到 qrc 中的所有资源到可执行二进制文件中。

其次,Qt 中的 rcc 文件用于很好地优化资源利用率,当我在我的项目中创建它时,它仍然将所有资源(添加到 .qrc 文件中)包含到可执行二进制文件中,即使 rcc 文件已经包含所有因此,我的问题是即使资源包含在可执行二进制文件中,为什么还要使用这个 rcc。为什么要在项目中包含冗余?

我可能误解了某些内容,或者我不知道某些要点,如果我错了,请纠正我。

【问题讨论】:

【参考方案1】:

回答为时已晚,但可能对任何人都有帮助。

我预计会有类似的问题,并使用了下一个解决方案: 如果您使用 QtCreator,只需将 RESOURCES += xxx 与 .pro 文件中的配置条件一起包装,如下所示:

!realbuild 
    RESOURCES += xxx.qrc

并将 CONFIG+=realbuild 设置为 qmake 参数。它给出了什么?您可以使用 QtCreator 的设计器编辑您的表单,并直接从编辑器使用资源,但它不会编译到您的目标文件中,资源必须在运行时使用 QResource::registerResource() 加载。使用可以手动构建资源,直接调用rcc工具,或者编写一个简单的脚本,使用QMAKE_POST_LINK变量调用。

现在的问题是 - 如何在运行时重新加载资源?...

【讨论】:

【参考方案2】:

Qt resources有两种选择:

在你的.pro文件中包含.qrc
 RESOURCES = myapp.qrc
rcc 创建一个外部二进制资源文件,然后在运行时用它注册
QResource::registerResource("/path/to/myresource.rcc");

不要两者都做。即,如果您之前将.qrc 直接包含在您的.pro 中,现在想要动态包含它,请从项目文件中删除RESOURCES 行并进行干净的构建。如果您未在项目的RESOURCES 设置中列出外部二进制资源,则它们不会包含在您的可执行文件中。

【讨论】:

以上是关于Qt 资源文件利用率的主要内容,如果未能解决你的问题,请参考以下文章

qt5---资源文件

Qt Creator 中没有资源文件

大型 Qt 外部二进制资源文件

QT:资源文件的添加及使用

VS2010怎么加载QT的QICON

如何在 Qt 中映射资源文件?