我曾参与过编译资源的项目。
现在,用户可以选择他想要处理的主题。直到那里没有问题,在一些研究中我开始使用External Binary Resource方法。
我的资源已成功构建,QResource::registerResource("/path/to/myresource.rcc");
返回true。
但它工作不正常。显然,已编译的资源仍然存在于可执行文件中。我无法看到存储在外部二进制资源中的不同图标。
如何删除此编译资源?我需要这样做才能正常工作吗?
答案 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文件,然后属性):
"$(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
工具,以便它编译为外部文件。通过这种方式,它将包含在您通常的编译工作流程中:
"$(QTDIR)\bin\rcc.exe" -name "%(Filename)" "%(FullPath)" -binary -o "%(Outputs)"
$(OutDir)\%(Filename).rcc
- 它与截图不同,因为我从现有项目中获取它,使用文本中的一个将RCC文件放在可执行文件的同一目录中。重要提示:请务必更改所有配置的构建工具。
如果您使用makefile或Qt Creator,则可以使用它作为基础来创建所需的脚本。
希望这可以帮到你。