1. 程式人生 > >Qt Qresource配合rcc命令,資原始檔預與原始碼分離

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檔案,然後替換一下就大功告成了!