閱讀本文大概需要4分鐘
rcc工具
Qt 中使用資源文件 qrc
絕對是一大亮點傲宜,為我們解決了很多棘手的事情.
qrc中包含了很多的資源文件运杭,比如:圖片、QML文件函卒、JS文件……
由來
很多時候县习,當程序中使用的圖片太多,慢慢可能會遇到一些錯誤谆趾,比如:
fatal error c1076:compiler limit ....
雖然可以修改限制大小躁愿,但是隨著項目越來越大,顯然這種辦法不可行.
有時候我們寫的QML
代碼不想讓別人看到沪蓬,該如何彤钟,QML代碼又不能編譯進exe中(除非進行靜態(tài)編譯)
編譯qrc
Qt為我們提供了一個工具rcc
,可以使用該工具對我們的資源文件進行二進制編譯跷叉,也就是加密逸雹,編譯后會生成新的文件,然后我們在程序中直接對新的文件進行注冊云挟,就可以正常使用了.
qrc文件
<RCC>
<qresource prefix="/">
<file>QmlRes/main.qml</file>
<file>QmlRes/Common/Button.qml</file>
<file>QmlRes/Common/LineEdit.qml</file>
<file>QmlRes/image/home_back.png</file>
.......
</qresource>
</RCC>
如上所示就是一個簡單的qrc文件內(nèi)容
編譯
rcc
工具可以從自己Qt安裝路徑查找.
rcc工具
編譯命令
核心命令只有一個:
%~dp0\Tool\MinGW\rcc.exe -binary %~dp0\qml.qrc -o %~dp0\Bin\QmlResSkin.rcc
可以寫一個bat
處理梆砸,加載的時候直接雙擊即可.
rcc工具
使用
使用時,自己在程序啟動前進行注冊加密后的資源文件.
rcc工具
關(guān)鍵代碼
QResource::registerResource ("QmlResSkin.rcc");
效果
rcc工具
參考腳本
cd QmlRes
echo 當前路徑: %~df0
::設(shè)置編譯后的文件路徑
set RCC_Foler=Bin
set RCC_FullFoler=%~dp0\%RCC_Foler%
echo 設(shè)置當前編譯后的路徑為:%RCC_Foler%
::設(shè)置編譯后的資源文件名
set skinName=QmlResSkin.rcc
echo 設(shè)置編譯后的資源文件名稱為:%skinName%
::檢測當前編譯后資源路徑是否存在
if exist %RCC_FullFoler% (
echo 文件目錄 %RCC_FullFoler%已經(jīng)存在
)else (
echo 文件目錄 %RCC_FullFoler%不存在,正在創(chuàng)建文件夾
md %RCC_FullFoler%
if exist %RCC_FullFoler% (
echo 已經(jīng)創(chuàng)建 %RCC_FullFoler% 路徑
)else (
echo 創(chuàng)建文件路徑失敗,將退出
goto stop
)
)
.....
cd ..
echo 正在編譯.....
%~dp0\Tool\MinGW\rcc.exe -binary %~dp0\qml.qrc -o %~dp0\Bin\%skinName%
echo.
echo 編譯結(jié)束......