【发布时间】:2018-08-10 05:46:20
【问题描述】:
我想在非常慢的硬件上以全屏模式启动我的 Qt Quick 应用程序。这意味着您可以从字面上观察 UI 的构建过程。那不好。 我已经尝试在我的窗口的 OnCompletion 中设置 visiblity=true 但它没有帮助。
我想在每次加载和布局都完成后很好地展示我的应用程序。
感谢您的帮助
【问题讨论】:
我想在非常慢的硬件上以全屏模式启动我的 Qt Quick 应用程序。这意味着您可以从字面上观察 UI 的构建过程。那不好。 我已经尝试在我的窗口的 OnCompletion 中设置 visiblity=true 但它没有帮助。
我想在每次加载和布局都完成后很好地展示我的应用程序。
感谢您的帮助
【问题讨论】:
不久前有一篇关于优化 Qt Quick 应用程序的blog post。以下是该列表中的注意事项:
做:
- 设计您的应用程序以从一开始就快速启动。想想您希望用户首先看到的是什么。
- 制作启动动画以允许并行加载。
- 使用链式加载。只运行与 CPU 中的内核数量一样多的加载器(例如,两个内核:两个加载器同时运行)。
- 第一个加载程序不应该是异步的。触发其余的加载器。
- 创建需要时加载的 QML 插件。
- 仅在需要时才连接到后端服务。
- 让 QML 插件启动非关键服务并在不再需要时关闭这些服务。
- 优化您的 png / jpg 图像。
- 通过减少顶点数量和移除不可见的部分来优化您的 3d 模型。
- 使用 glTF 优化 3D 模型加载。
- 使用 Qt Quick Controls 2.0。这些是为嵌入式使用而设计的,创建时间比 Quick Controls 1.0 中的要好得多 嵌入式用例。
- 限制剪辑和不透明度的使用。
- 衡量 GPU 限制并在设计 UI 时考虑这些限制。
- 使用 Qt Quick Compiler 预编译 QML 文件。
- 调查您的架构是否可以使用静态链接。
- 争取声明式绑定而不是命令式信号处理程序。
- 保持属性绑定简单。一般来说,保持 QML 代码简单、有趣和可读。良好的表现随之而来。
- 针对多个平台和外形尺寸时,使用文件选择器而不是加载器和动态组件实例化。 不要羞于“复制”简单的 QML 代码并使用文件选择器 加载定制版本。
不要:
- 过度使用 QML。即使您使用 QML,也无需在 QML 中完成所有操作。
- 初始化 main.cpp 中的所有内容。
- 创建包含所有必需接口的大单例。
- 为 Listview 创建复杂的委托。
- 使用 Qt Quick Controls 1.0 进行嵌入式。
- 如果可能,应完全避免剪辑。 (在 98% 的用例中,这应该是可能的)。
- 陷入过度使用加载程序的常见陷阱。加载器非常适合延迟加载应用程序页面等较大的东西,但也引入了 加载简单事物的开销很大。这不是黑魔法 加速一切。这是一个额外的项目 QML 上下文。
- 过度重复使用。最大限度地重复使用代码通常会导致更多的绑定、更高的复杂性和更低的性能。
Qt 文档中还有一个关于性能的页面:
【讨论】: