Qt资源系统是当应用程序执行时,用于存储二进制文件独立平台机制。
如果应用程序总是需要一组文件(例如:图标,翻译文件等),并且你不想冒失去这些文件的风险,使用Qt资源系统是非常有效的。
Resource Collection Files (.qrc)
与应用程序相关的资源都写在了.qrc
文件中,其符合XML格式。该文件列出了硬盘中的文件,并为他们分配资源的名字,方便应用程序使用这些资源。
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>images/copy.png</file>
<file>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>
在.qrc
中列出的资源文件是应用程序资源树的一部分,其具体的文件路径相对于.qrc所在目录。注意:所列出的资源文件必须要与.qrc
在同一目录,或者在其子目录。
资源数据可被编译为二进制并且存储到应用程序的代码中,应用程序代码可通过资源系统创建二进制资源。
默认情况,通过:/
或qrc格式结合文件访问资。
例::/images/cut.png
;qrc:///images/cut.png
。
该文名为images/cut.png
,可在file标签内添加alias属性对其进行修改。
<file alias="cut-img.png">images/cut.png</file>
之后,可通过 :/cut-img.png
对文件进行访问。
也可在qresoucre标签内添加prefix属性对其修改,为其添加一个前缀路径。
<qresource prefix="/myresources">
<file alias="cut-img.png">images/cut.png</file>
</qresource>
此时,文件可通过:/myresources/cut-img.png
进行访问。
根据用户的语境,一些资源需要更改文件名,如翻译文件或图表。可在qresource标签中通过添加lang
属性来指定一个适合语境的名称。如:
<qresource>
<file>cut.jpg</file>
</qresource>
<qresource lang="fr">
<file alias="cut.jpg">cut_fr.jpg</file>
</qresource>
在应用程序中使用资源
在应用程序中,资源路径可替代原始文件路径。特别的,可使用资源路径替代QIcon,Qimage和QPixmap构造器中的文件名。
cutAct = new QAction(QIcon(":/images/cut.png"), tr("Cu&t"), this);