QT 中 qrc转rcc

qrc文件

  • 定义.qrc文件是XML格式的,用于声明应用程序需要的资源,如图片、音频文件、字体和其他数据文件。
  • 使用场景
    • 开发阶段:在开发过程中,.qrc文件便于编辑和调试,因为它是纯文本格式,可以直接修改和查看。
    • 资源未最终确定:如果资源可能在构建后发生变化,比如根据用户偏好或地区差异动态加载不同语言的资源,使用.qrc文件更灵活。

rcc文件

  • 定义.rcc文件是通过rcc工具将.qrc文件编译得到的二进制格式资源文件。它包含了.qrc文件中定义的所有资源的实际数据。
  • 使用场景
    • 部署阶段:在构建最终应用程序时,通常会将.qrc文件转换成.rcc文件,以便将资源嵌入到应用程序的二进制文件中,这减少了外部依赖,使得应用程序可以独立运行。

使用rcc的优点:

当使用rcc工具将.qrc文件转换为.rcc文件时,它实质上是将你应用程序所需的资源(如图像、样式表、翻译文件等)打包并嵌入到应用程序的二进制文件中。这一过程减少了以下几种外部依赖:

  1. 文件系统依赖:原本应用程序可能需要访问磁盘上的文件来获取资源,但通过使用.rcc文件,这些资源不再需要从磁盘上的独立文件加载,而是直接从应用程序的二进制文件中提取。这意味着应用程序可以脱离特定的文件系统结构运行,即使在没有那些原始资源文件的环境中也能正常工作。

  2. 路径依赖:在开发阶段,资源文件的路径可能相对于.qrc文件或应用程序的执行文件。但在部署到不同环境时,这些路径可能不再有效。通过使用.rcc文件,资源的物理位置不再重要,因为它们已经成为应用程序的一部分,从而消除了路径依赖。

  3. 减少安装包大小和复杂性:在部署应用程序时,如果资源文件是独立的,那么安装包可能需要包含额外的文件,这增加了安装的复杂性和潜在的错误来源。使用.rcc文件,你可以创建一个更精简的安装包,其中所有必要的资源都已包含在内。

  4. 提高启动速度和响应时间:由于资源已经是二进制格式并嵌入到应用程序中,因此在应用程序启动时加载资源的速度会更快。这可以显著提高用户体验,尤其是对于那些依赖大量资源的应用程序。

  5. 安全性增强:当资源直接嵌入到应用程序中时,它们不易受到篡改或意外删除的影响,从而增强了应用程序的安全性和稳定性。

总之,通过使用.rcc文件,你的应用程序可以更加独立、高效和安全地运行,减少了对外部文件系统和特定环境的依赖。这对于需要在各种环境中部署的应用程序来说尤其有用,包括嵌入式系统、移动设备和那些对文件系统访问有限制的环境。

qrc转rcc 方法

命令

rcc -binary resources.qrc -o resources.rcc

在qrc所在目录 打开cmd 如果不是在qrc所在的目录 需要指定路径到qrc所在目录

C:> cd /d C:\MyProject\Resources
C:\MyProject\Resources> rcc -binary resources.qrc -o resources.rcc

确保 qt 的bin目录已经加到环境变量里面 

如果配置了很多qt 的路径 会使用上边的 

也可以指定rcc的完整路径

"C:\Qt\5.15.2\msvc2019_64\bin\rcc.exe" -binary resources.qrc -o resources.rcc

举例

把rcc命令 写成一个bat工具

@echo off
//C:\Users\YourName\Scripts\myScript.bat
set SolutionDir=%~dp0..  //当前.bat 文件所在父文件夹的绝对路径  C:\Users\YourName\
set OutputDir=%~dp0      //当前.bat 文件所在文件夹的绝对路径  C:\Users\YourName\Scripts\
set qtPath=%QTDIR_2019X64\bin\rcc.exe //是QT配置环境变量的别名 QTDIR_2019X64
set _rcc=1               //-rcc作为变量 用做判断

echo 1.project1.qrc     //在命令台输出 1.project1.qrc
echo 2.project2.qrc     //在命令台输出 2.project2.qrc
echo 3.project3.qrc     //在命令台输出 3.project3.qrc


//当这条命令被执行时,命令行界面会暂停并显示提示消息 Please select type(1,2,3),等待用户输入。一旦用户输入了数据并按下了回车键,输入的值就会被存储在 _rcc 环境变量中。
set /p _rcc = Please select type(1,2,3)

用于根据环境变量 _rcc 的值来决定脚本的流程 
if %_rcc% equ 1 goto _project1  //跳到project1的位置 
if %_rcc% equ 2 goto _project2
if %_rcc% equ 3 goto _project3

:project1
echo create project1.rcc
%qtPath% -binary "%SolutionDir%\...(对应路径)\project1.qrc" -o  "%OutputDir%\...(对应路径)\project1.rcc"

echo create project1.css
copy /B/Y  "%SolutionDir%\...(对应路径)\project1.css"   "%OutputDir%\...(对应路径)\project1.css"
goto end

:project2
echo create project2.rcc
%qtPath% -binary "%SolutionDir%\...(对应路径)\project2.qrc" -o  "%OutputDir%\...(对应路径)\project2.rcc"

echo create project2.css
copy /B/Y  "%SolutionDir%\...(对应路径)\project2.css"   "%OutputDir%\...(对应路径)\project2.css"
goto end

:project3
echo create project3.rcc
%qtPath% -binary "%SolutionDir%\...(对应路径)\project3.qrc" -o  "%OutputDir%\...(对应路径)\project3.rcc"

echo create project3.css
copy /B/Y  "%SolutionDir%\...(对应路径)\project3.css"   "%OutputDir%\...(对应路径)\project3.css"
goto end


:end
pause




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值