#c #qt
#c #qt
Вопрос:
Здесь я описываю проблему, с которой я столкнулся с файлом Qt resource .rcc.
во-первых, когда я создал .файл qrc в моем проекте поместит все ресурсы, добавленные в qrc, в исполняемый двоичный файл.
во-вторых, файл rcc в Qt используется для правильного и оптимального использования ресурсов, и когда я создаю его в своем проекте, он по-прежнему включает все ресурсы (добавленные в .qrc-файл) в исполняемый двоичный файл, даже rcc-файл уже содержит все ресурсы итак, мой вопрос в том, зачем использовать этот rcc, даже если ресурсы включены в исполняемый двоичный файл. Зачем включать избыточность в проект??
возможно, я что-то неправильно истолковываю или я не в курсе некоторых моментов, пожалуйста, поправьте меня, если я ошибаюсь.
Ответ №1:
Слишком поздно для ответа, но может быть кому-нибудь поможет.
Я ожидал подобной проблемы и использовал следующее решение: если вы используете QtCreator, просто перенесите ваши РЕСУРСЫ = xxx с условием конфигурации в файл .pro, вот так:
!realbuild {
RESOURCES = xxx.qrc
}
и задайте CONFIG =realbuild для параметров qmake. Что это дает? Вы можете редактировать свои формы с помощью конструктора QtCreator и использовать ресурс непосредственно из редактора, но он не будет скомпилирован в ваш целевой файл, ресурсы должны быть загружены во время выполнения с помощью QResource::registerResource(). Пользователи могут создавать ресурсы вручную, используя прямой вызов инструмента rcc, или написать простой скрипт и вызвать его, используя переменную QMAKE_POST_LINK.
Теперь вопрос в том, как перезагрузить ресурсы во время выполнения?…
Ответ №2:
Для ресурсов Qt есть два варианта:
- включите
.qrc
в свой.pro
файл с
RESOURCES = myapp.qrc
- создайте внешний двоичный файл ресурсов с помощью
rcc
, затем зарегистрируйте его во время выполнения с помощью
QResource::registerResource("/path/to/myresource.rcc");
Не делайте и того, и другого. т.е. если ранее вы .qrc
непосредственно включали в себя .pro
, а теперь хотите включить его динамически, удалите RESOURCES
строку из файла проекта и выполните чистую сборку. Внешние двоичные ресурсы не включаются в ваш исполняемый файл, если вы не указали их в RESOURCES
настройках вашего проекта.