使用外部二进制资源

时间:2017-04-26 18:24:43

标签: c++ qt

我曾参与过编译资源的项目。

现在,用户可以选择他想要处理的主题。直到那里没有问题,在一些研究中我开始使用External Binary Resource方法。

我的资源已成功构建,QResource::registerResource("/path/to/myresource.rcc");返回true。

但它工作不正常。显然,已编译的资源仍然存在于可执行文件中。我无法看到存储在外部二进制资源中的不同图标。

如何删除此编译资源?我需要这样做才能正常工作吗?

2 个答案:

答案 0 :(得分:2)

假设您正在为项目使用// First add the class "linked-scrollbar" to the elements you want to link // Then manually or dynamically add an attribute which will contain // the data if the element is currently scrolling or not $('.linked-scrollbar').attr("data-scrolling", "false"); $('.linked-scrollbar').scroll(function(){ if($(this).attr("data-scrolling") == "false"){ $('.linked-scrollbar').not(this).attr("data-scrolling", "true"); $('.linked-scrollbar').not(this).scrollLeft($(this).scrollLeft()); } $(this).attr("data-scrolling", "false"); }); 文件,则需要从.pro列表中删除资源文件。如果您仍希望将其列在项目中,则可以使用RESOURCES

之前:

OTHER_FILES

后:

RESOURCES += file1.qrc file2.qrc

如果您想更进一步,可以自动构建qrc文件:

RESOURCES += file2.qrc
OTHER_FILES += file1.qrc

答案 1 :(得分:1)

您必须更改资源的编译方式。默认情况下,Qt项目中包含的每个资源文件(例如resources.qrc)都编译到C ++代码(编译项目后可能看到的qrc_resources.cpp) 。这使得资源被编译并与您的可执行文件(或库)链接。 Visual Studio插件的Qt就是这样做的:为每个QRC文件添加一个自定义构建步骤。打开QRC文件的属性以查看(右键单击QRC文件,然后属性):

Default compilation of a QRC file

  • 命令行:"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" -no-compress "%(FullPath)" -o .\GeneratedFiles\qrc_%(Filename).cpp
  • 输出:.\GeneratedFiles\qrc_%(Filename).cpp
  • 正如您所知,
  • %(Filename)是文件的无扩展名称

要避免此行为,只需从项目中删除QRC文件即可。当然,问题是您必须手动构建.rcc文件。您可以使用脚本作为makefile的一部分来完成。

另一方面,如果您使用的是Visual Studio,则可以更改用于编译它的命令,将-binary选项添加到rcc工具,以便它编译为外部文件。通过这种方式,它将包含在您通常的编译工作流程中: Custom compilation of QRC to RCC

  • 命令行:"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" "%(FullPath)" -binary -o "%(Outputs)"
  • 输出:$(OutDir)\%(Filename).rcc - 它与截图不同,因为我从现有项目中获取它,使用文本中的一个将RCC文件放在可执行文件的同一目录中。

重要提示:请务必更改所有配置的构建工具。

如果您使用makefile或Qt Creator,则可以使用它作为基础来创建所需的脚本。

希望这可以帮到你。