Qt: Resource System

http://doc.trolltech.com/latest/resources.html

qrc文件:

xml格式的qrc文件,給出資源名字和磁盤上資源之間的聯繫。例如

<!DOCTYPE RCC><RCC version="1.0">
<qresource prefix="/myresources">
     <file alias="cut-img.png">images/cut.png</file>
     <file>images/new.png</file>
     <file>images/open.png</file>
     <file>images/paste.png</file>
     <file>images/save.png</file>
</qresource </RCC>
file的alias屬性給資源一個額外的名字
qresource的prefix屬性給所有資源名字加上了前綴
qresource的屬性lang屬性,來本地化資源文件
<qresource>
 <file>cut.jpg</file>
 </qresource>
 <qresource lang="fr">
     <file alias="cut.jpg">cut_fr.jpg</file>
 </qresource>
當QLocale::system().name()返回“fr_FR”時,”:/cut.jpg”會指向cut_fr.jpg

將資源編譯到可執行文件中:

C++中,.pro文件 –〉qmake –> 生成qrc_application.cpp –> 成爲application可執行程序的一部分

python中,用pyrcc4編譯資源文件:
pyrcc4 app.qrc -o app_rc.py
則二進制文件成爲靜態的數組存放在application_rc.py中,通過QTCore.qRegisterResourceData()註冊。似乎和編譯爲獨立的二進制文件沒多大區別~

將資源編譯爲獨立的二進制文件:

需要時註冊和反註冊。

第一步:創建.qrc文件

第二步:編譯: rcc –binary myresource.qrc –o myresource.rcc

第三步:在程序中通過QResource API註冊

QResource::registerResource(“/path/to/myresource.rcc”)

 

在程序中使用資源:

加上":/”表示資源引用,例如: QIcon(":/images/cut.png")

資源在內部的表示:

程序啓動時,資源在內存中以樹的形式生成。QFile來解析資源的路徑。用“:/”來初始化QDir可以遍歷資源樹。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章