Работа с ресурсами — Qt Resource

Автор: | 29 июля, 2019

Система ресурсов Qt является независимым от платформы механизмом хранения двоичных файлов в исполняемом файле приложения. Она основана на взаимодействий qmake  и  компилятором ресурсов rcc. Ресурсы, связанные с приложением, указываются в фале qrc.

Данный формат файла основан на XML формате в котором перечислены файлы с относительным путем и при необходимости присваивается имя ресурса для доступа к ресурсу. 

Пример содержания файла qrc:

<RCC>
    <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>  
</RCC>

Перечисленные файлы ресурсов должны находиться в том же каталоге, что и файл .qrc или в одном из его подкаталогов в данном случаи в каталоге images.

Пример с присвоенными именами ресурса:

<RCC>
    <qresource prefix="/new">
		<file>images/new.png</file>
    </qresource>
	
    <qresource prefix="/open">
		<file>images/new.png</file>
    </qresource>
	
	<qresource prefix="/copy">
	    <file>images/copy.png</file>
	</qresource>
</RCC>

По умолчанию ресурсы доступны в приложении под тем же именем файла, что и в дереве исходного кода с префиксом «:/» или по URL-адресу со схемой qrc.

Для примера:

// Доступ с префиксом
“:/ images/copy.png”    // Без подкаталога
":/new/images/new.png"    // С использованием подкаталога

// Доступ по URL со схемой qrc
qrc:///images/ copy.png    // Без подкаталога
qrc:/// new /images/ new.png     // С использованием подкаталога

Для компиляции ресурса в двоичный файл необходимо указать в файле проекта pro приложения следующую строку:

 RESOURCES += application.qrc

qmake создаст файл с именем qrc_application.cpp который будет связан с приложением. Этот файл содержит все данные в виде статических C ++ массивов. Файл qrc_application.cpp автоматически обновляется каждый раз, когда изменяется файл qrc или один из файлов, на которые он ссылается, изменяется.