Ресурсы, внедренные в исполняемый модуль

Ресурсы, внедренные в исполняемый модуль

До сих пор в этой главе мы говорили о доступе к данным, которые находятся на внешних устройствах, но в Qt можно также внедрять двоичные данные или текст в исполняемый модуль приложения. Это обеспечивается ресурсной системой Qt. В других главах мы использовали файлы ресурсов для внедрения файлов изображений в исполняемый модуль, однако внедрять можно любой файл. Читать внедренные файлы можно с использованием QFile, как будто это обычные файлы, расположенные в файловой системе.

Ресурсы преобразуются в программный код С++ ресурсным компилятором Qt (rcc). Мы можем указать qmake, что необходимо включить специальные правила для выполнения rcc, добавляя следующую строку в файл .pro:

RESOURCES = myresourcefile.qrc

Файл myresourcefile.qrc — это XML—файл, который содержит список файлов, внедренных в исполняемый модуль.

Допустим, создается приложение, которое сохраняет подробную контактную информацию. Ради удобства пользователей мы хотим внедрить международные телефонные коды в исполняемый модуль. Если файл находится в подкаталоге datafiles каталога сборки приложения, файл ресурсов может выглядеть следующим образом:

<!DOCTYPE RCC><RCC version="1.0">

<qresource>

<file>datafiles/phone-codes.dat</file>

</qresource>

</RCC>

В приложении ресурсы опознаются по префиксу пути :/. В этом примере файл телефонных кодов имеет путь :/datafiles/phone-codes.dat и может быть считан как любой другой файл, используя QFile.

Преимуществом внедрения данных в исполняемый модуль является невозможность их потери и возможность создания действительно автономных исполняемых модулей (если использовалась статическая компоновка). Двумя недостатками являются необходимость замены всего исполняемого модуля при изменении внедренных данных и увеличение размера исполняемого модуля из-за дополнительного расхода памяти под внедренные данные.

Ресурсная система Qt обладает дополнительными возможностями, которые не представлены в этом примере, включая поддержку псевдонимов файлов и локализацию. Информацию по этим возможностям можно найти на веб-странице http://doc.trolltech.com/4.1/resources.html