Qt资源文件利用率

时间:2011-06-11 04:48:38

标签: c++ qt

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

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

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

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

2 个答案:

答案 0 :(得分:2)

回答太迟了,但可能对任何人有所帮助。

我期待类似的问题,并使用下一个解决方案: 如果你使用QtCreator,只需在.pro文件中包含您的RESOURCES + = xxx with config condition,就像那样:

!realbuild {
    RESOURCES += xxx.qrc
}

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

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

答案 1 :(得分:0)

Qt resources有两种选择:

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

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