Qt/QML:如何在不重新启动应用程序的情况下"switch to"或"open"另一个 QML 文件?
Qt/QML: How do I "switch to" or "open" another QML file without restarting my app?
我有一个小应用程序,它从服务器加载QML文件,并向用户显示某种"书架"。
用户可以从显示的书籍中选择一本,C++将在后台下载一个ZIP文件,并对其进行解压缩。结果是,文件系统上的每本书都有一个文件夹,其中包含一个"main.qml"文件,该文件基本上是该书的自包含版本,允许用户浏览/缩放等。
我正在使用ApplicationWindow
在其QML文件中显示书架,现在我想知道"切换"到书并在ApplicationWindow中显示它的最佳方法是什么。我的意思是,如果书架能从内存中"卸载"出来,为图书展示腾出资源,那就太好了。
我该怎么做?
我的粗略想法,感觉不太"正确"是:
- 是否使用
QQmlApplicationEngine::load()
加载另一个URL - 将书籍的QML组件作为最上面的子对象添加到书架;但这会导致大量的资源浪费
欢迎提出任何建议!
最基本的解决方案是只在应用程序窗口中使用Loader
。在实例化时使用main.qml
设置它,然后当用户选择一本书时,将Loader
的源设置为该书的QML文件。
然而,最好动态加载"屏幕",然后可以在销毁前一个屏幕之前使用过渡效果。
相关文章:
- 从C++实例化QML
- "error: no matching function for call to"构造函数错误
- 使用CMake创建QML插件
- 调用专用模板时出错"no matching function for call to [...]"
- C++ Singleton - Prevent ::instance() to variable
- QT通过C++添加映射QML项目
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- Visual Studio Code "undefined reference to `WinMain@16'"
- 如何在没有信号的情况下从C++执行QML插槽
- 使用 GCC 卸载的 OpenMP 卸载失败,并出现"Ptx assembly aborted due to errors"
- QML按钮点击功能执行顺序
- 如何解决"invalid conversion from 'char' to 'const char*'"
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- 建议在运行时将带有类实例的列表从c++导入qml
- Qt Quick-如何仅从c++代码与qml属性交互
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- 'QML Connections: Cannot assign to non-existent Property'尽管情况正好相反
- Qt/QML:如何在不重新启动应用程序的情况下"switch to"或"open"另一个 QML 文件?
- 无法在 qml 中创建C++类对象"Cannot assign object to list property "数据" "