Qt Qresource配合rcc命令,資原始檔預與原始碼分離
我們大家都知道,在qt框架中,資原始檔字尾名是以.qrc結尾的。它可以將我們的圖片檔案、qml、與樣式表文件等裝進可執行程式中。我們將怎樣做呢?一般情況下,我們在Qt Creator專案右鍵新增新檔案,選擇Qt Resource File。之後輸入名字,專案中就有資源管理檔案了。 .qrc檔案裡是以xml格式管理資原始檔的,如下:
<RCC> <qresource prefix="/images"> <file alias="icon">images/logo.ico</file> <file alias="title">images/title.png</file> <file alias="closeBtn">images/gb1.png</file> </qresource> <qresource prefix="/qss"> <file alias="stylesheet">stylesheet.qss</file> </qresource> <qresource prefix="/SearchItem"> <file alias="SearchItemFile">SearchItem/SearchItemColor.dat</file> </qresource> </RCC>
這裡面有三種檔案:圖片(圖示)、.qss(樣式表)、.dat檔案格式。 使用的時候我們有兩種方式:
:/images/title.png qrc:///images/title.png </span>
假設這時候,我們的程式只需要換個面板(圖示),那麼我們怎麼辦呢?只能是開啟原始碼,將qrc檔案裡的圖示換掉,然後重新編譯,最後才能生成新的可執行檔案。 顯然這是比較麻煩的。這樣還容易被別人惡意篡改圖片,造成很不好的影響。 為了更好地保護我們的圖片安全,我們應該儘可能的將專案的功能原始碼與資原始檔分離開來,如果只是改變圖示之類的改變,就不需要重新編譯原始碼了。具體我們該怎樣做呢?
1.使用QT Creator 新建一個資原始檔.qrc。這時候,這個資原始檔並不是屬於任何專案的。
2.在.qrc存放的目錄下新建images資料夾(用於存放專案所有的圖片)與styleSheet資料夾(用於存放樣式表文件.qss)。
3.用qt creator開啟resource.qrc,然後將images資料夾與qss資料夾裡的所有檔案新增到qrc檔案裡。
4.使用rcc 命令將resource.qrc生成.rcc二進位制檔案。
rcc --binary resource.qrc -o skin.rcc
至此,我們的資原始檔已經分離開並且已經做成了二進位制檔案。那麼程式中怎樣使用的呢?
5.在專案的可執行目錄下新建skin資料夾。將生成的skin.rcc放到skin資料夾裡。
6.在qt程式啟動的時候,載入一下資原始檔
QResource::registerResource(qApp->applicationDirPath() + "/skin/skin.rcc"); QFile file(":/qss/stylesheet"); if(file.open(QFile::ReadOnly)) { QString strStyleSheet = file.readAll(); file.close(); qApp->setStyleSheet(strStyleSheet); }
好了,到這裡我們就完成了所有工作,將資原始檔與原始碼檔案完全分離開來,如果只是更換資原始檔,就不用重新編譯主程式了,只需重新生成skin.rcc檔案,然後替換一下就大功告成了!