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

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

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

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

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

【问题讨论】:

    标签: c++ qt


    【解决方案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 设置中列出外部二进制资源,则它们不会包含在您的可执行文件中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-09
        • 2018-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-16
        • 2021-08-08
        相关资源
        最近更新 更多