У меня есть несколько тем папки каждый из которых содержит .qrc
файл:Переключение между несколькими файлами .qrc во время выполнения
redTheme/
- File.qml
- qml.qrc
blueTheme/
- File.qml
- qml.qrc
я в настоящее время может переключаться между этими темами во время компиляции. Это означает, что мне нужно изменить свой оператор import
на тему, которую я хочу использовать.
Я хотел бы знать, могу ли я сделать это во время выполнения. Это даст пользователю большую гибкость. пользователь нажимает на Button
, который инициирует signal
и загружает другую тему (от C++
или QML
)
Моего первого допроса: Пример: я должен использовать .qrc
файлы или QML Modules?
Бывший загружает свое содержимое после вызова от C++
, тогда как последнее заставляет меня использовать import
заявления.
Это приносит мне на другие вопросы:
- Могу ли я использовать несколько
.qrc
файлов? - Если да, могу ли я «разгрузить» файл
.qrc
? Может быть, это глупый вопрос: Я не полностью осведомлен о механизмах системы Qt Resource System. - Как загрузить еще один файл
.qrc
? Я бы получил файлmain.qrc
, загружающий просмотры и моиthemes.qrc
файлы, загружающие пользовательскиеQML
объектов.
Я немного скептически отношусь к этой работе. Во-первых, вы не упомянули, как QML перезагружается движком QML. Во-вторых, как приложение может загрузить другое изображение при регистрации нового ресурса? Вы пробовали это, скажем, с помощью простого приложения QML, которое отображает «изображение»? Обновляется ли изображение при загрузке нового файла .rcc? – Mitch
Я создал ваш пример и сгенерировал свой файл 'redTheme.rcc'. Я поместил его в исполняемый каталог. Однако, когда я использую 'QResource :: registerResource (" redTheme.rcc ");', он возвращает 'false'. Зачем? Может быть, из-за моего компилятора ([см. Этот вопрос] (http: // stackoverflow.ком/вопросы/29073163/кварта-5-4-неспособная к доступу-ресурсы из-коды)) ?. Я также использую MSVC 2013. –
@ Запустите свое право, которое не будет обновляться - переключение ресурсов ничего не обновит, это делается вручную, например, при перезапуске приложения. – Felix