我有一个从服务器加载 QML 文件并向用户显示某种“书架”的小应用程序。
用户可以选择其中一本显示的书籍,C++ 将在后台下载一个 ZIP 文件,并将其解压缩。结果是文件系统上每本书的文件夹都有一个“main.qml”文件,该文件基本上是该书的独立版本,允许用户浏览/缩放/等。
我正在使用 ApplicationWindow
在其 QML 文件中显示书架,现在我想知道“切换”到book 并将其显示在 ApplicationWindow 中。 最好 我的意思是,如果书架几乎从内存中“卸载”以释放资源用于书籍展示,那就太好了。
我该怎么做?
我的粗略想法,感觉不太“正确”是:
- 使用
QQmlApplicationEngine::load()
加载另一个 URL? - 将图书的 QML 组件作为最顶层的子对象添加到书架;但这会导致大量资源浪费。
- ...?
如有任何建议,我们将不胜感激!
最佳答案
最基本的解决方案是在您的应用程序窗口中使用 Loader
。在实例化时使用您的 main.qml
设置它,然后当用户选择一本书时,将 Loader
的源设置为该书的 QML 文件。
然而,动态加载“屏幕”会更好,这样您就可以在销毁前一个屏幕之前使用过渡效果。
关于c++ - Qt/QML : How do I "switch to" or "open" another QML file without restarting my app?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28327168/