2011-06-11 3 views
1

Здесь я описываю проблему, с которой столкнулся файл .rcc с ресурсами Qt.Qt Использование файла ресурсов

first, Когда я создал файл .qrc в моем проекте, он будет соответствовать всем ресурсам, добавленным в qrc, в исполняемый двоичный файл.

второй, rcc-файл в Qt, используемый для наилучшего использования и оптимизации использования ресурсов, и когда я его создаю в своем проекте, он по-прежнему включает все ресурсы (добавленные в .qrc-файл) в исполняемый двоичный файл, даже rcc-файл уже содержит все ресурсы, поэтому, мой вопрос заключается в том, почему использовать эту rcc, даже если ресурсы включены в исполняемый двоичный файл. Зачем включать избыточность в проект?

Возможно, я что-то неправильно истолковал или я не знаю о некоторых моментах, пожалуйста, исправьте меня, если я ошибаюсь.

ответ

0

Есть два варианта для Qt resources:

  • включают .qrc в файле .pro с
RESOURCES = myapp.qrc 
  • создать внешний двоичный файл ресурсов с rcc, а затем зарегистрировать его во время выполнения с
QResource::registerResource("/path/to/myresource.rcc"); 

Не то и другое. т. е. если ранее у вас был .qrc, который был включен в ваш .pro, и теперь хотите включить его динамически, удалите строку RESOURCES из файла проекта и выполните чистую сборку. Внешние двоичные ресурсы не включены в ваш исполняемый файл, если вы не указали их в настройке RESOURCES вашего проекта.

2

Слишком поздно для ответа, но может помочь кому угодно.

Я ожидал аналогичная проблема, и используется следующее решение: , если вы используете QtCreator, просто обернуть RESOURCES + = ххх с условием конфигурации в файле .pro, как этот:

!realbuild { 
    RESOURCES += xxx.qrc 
} 

и установить CONFIG + = realbuild для qmake params. Что он дал? Вы можете редактировать свои формы с помощью конструктора QtCreator и использовать ресурс непосредственно из редактора, но он не будет скомпилирован в ваш целевой файл, ресурсы должны быть загружены во время выполнения с помощью QResource :: registerResource(). Использование может создавать ресурсы вручную, используя прямой вызов инструмента rcc или писать простой скрипт и вызывать его с использованием переменной QMAKE_POST_LINK.

Теперь вопрос в том, как перезагрузить ресурсы во время выполнения? ...

Смежные вопросы