Qt Widgets与Qt Quick的区别
Qt Widgets
- 只允许使用C++或Python来进行开发
- 默认情况下,在桌面平台上,具备原生应用的外观
- 可以使用样式来修改外观
- 移动应用不具备原生应用外观
- 不依赖任何渲染引擎(OpenGL)
- Qt有自己的渲染引擎
- 可以Qt Widgets窗口内渲染其他引擎(OpenGL)的内容
- 提供基础的UI组件
- 不是很动态(fluid),但支持动画效果
- 可以自定义UI组件的行为
- 通过继承的方式或完全手写一个自己的组件
Qt Quick
- 一般情况下使用QML开发情况
- 有时需要C++/Python的辅助
- 自Qt 6以来Qt Quick的组件也具备了原生应用的外观
- 在Android平台下会使用主题信息
- 依赖本地渲染引擎
- Mac上使用的是本地Metal渲染引擎
- 可以使用本地渲染引擎渲染自己的组件
- 支持很流畅的动效(fluid)
- 很容易实现复杂的动画效果
- 很容易实现复杂的图形效果
- 可以自定义组件的行为
- 通过扩展或完全手写一个自己的组件
如何做出选择
Qt Widgets
- 你仅仅想实现简单的UI效果
- 你需要程序有更好的运行效率
- 你不希望和QML、JavaScript打交道
Qt Quick
- 你需要把应用程序部署在具备MCU芯片的设备上
- 你需要把应用部署到移动端和嵌入式设备上
- 你需要实现更复杂的界面效果
加一点私货
在Windows上使用Qt 5时,一个简单的QML应用程序消耗大约100MB的RAM,而使用Qt 6时则不到大约20MB。而且运行效率也高了不少,windeployqt之后,再用7z压缩,体积也就20多兆,以后有机会再写写QML编译运行引擎的一些文章。
原文: