Qt資源文件加密

閱讀本文大概需要4分鐘

rcc工具

Qt 中使用資源文件 qrc絕對是一大亮點(diǎn),為我們解決了很多棘手的事情.

qrc中包含了很多的資源文件,比如:圖片、QML文件、JS文件……

由來

很多時候,當(dāng)程序中使用的圖片太多,慢慢可能會遇到一些錯誤,比如:

fatal error c1076:compiler limit ....

雖然可以修改限制大小,但是隨著項(xiàng)目越來越大,顯然這種辦法不可行.

有時候我們寫的QML代碼不想讓別人看到,該如何,QML代碼又不能編譯進(jìn)exe中(除非進(jìn)行靜態(tài)編譯)

編譯qrc

Qt為我們提供了一個工具rcc,可以使用該工具對我們的資源文件進(jìn)行二進(jìn)制編譯,也就是加密,編譯后會生成新的文件,然后我們在程序中直接對新的文件進(jìn)行注冊,就可以正常使用了.

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工具

使用

使用時,自己在程序啟動前進(jìn)行注冊加密后的資源文件.

rcc工具

關(guān)鍵代碼

QResource::registerResource ("QmlResSkin.rcc");

效果

rcc工具

參考腳本

cd QmlRes

echo 當(dāng)前路徑: %~df0

::設(shè)置編譯后的文件路徑
set RCC_Foler=Bin
set RCC_FullFoler=%~dp0\%RCC_Foler%
echo 設(shè)置當(dāng)前編譯后的路徑為:%RCC_Foler%

::設(shè)置編譯后的資源文件名
set skinName=QmlResSkin.rcc
echo 設(shè)置編譯后的資源文件名稱為:%skinName%

::檢測當(dāng)前編譯后資源路徑是否存在
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é)束......
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容