Qt/QML: Как "переключиться" или "открыть" другой файл QML без перезапуска моего приложения?
У меня есть небольшое приложение, которое загружает файл QML с сервера и отображает пользователю своего рода "книжную полку".
Пользователь может выбрать одну из отображаемых книг, и C++ загрузит ZIP-файл в фоновом режиме, распакует его. Результатом является папка для каждой книги в файловой системе с файлом "main.qml", который в основном является автономной версией книги, позволяющей пользователю просматривать /zoom/etc.
я использую ApplicationWindow
чтобы отобразить книжную полку в ее файле QML, и теперь мне интересно, как лучше всего было бы "переключиться" на книгу и отобразить ее в ApplicationWindow. В лучшем случае я имею в виду, что было бы неплохо, если бы книжная полка в значительной степени "выгружалась" из памяти, чтобы освободить ресурсы для отображения книги.
Как бы я это сделал?
Мои грубые идеи, которые кажутся мне не совсем "правильными":
- использование
QQmlApplicationEngine::load()
загрузить другой URL? - Добавьте компонент QML книги как верхний дочерний объект на полку; но это приведет к большим потерям ресурсов.
- ...?
Любые предложения приветствуются!
1 ответ
Самое основное решение было бы просто использовать Loader
в окне вашего приложения. Установите его использовать свой main.qml
при создании экземпляра, а затем, когда пользователь выбирает книгу, установите Loader
источник в QML-файл книги.
Однако было бы лучше динамически загружать "экраны", тогда вы могли бы использовать эффекты перехода до разрушения предыдущего экрана.