Qt Widgets、QML、Qt Quick的区别

序言

最近一段时间接触了QML,并了解了C++如何与QML实现数据交互后,我在用QWidget中如何去加载QML时看到了QQuickView,QQuickWIdget,把Qt Quick 与 QML一时之间没怎么弄明白。

区别

参考这位大神博客:
https://www.cnblogs.com/lsgxeva/p/7826761.html
这位大神 还详细地讲解了QWidget、 QML 、Qt Quick区别。
这里我把我的理解说下。如有误导请纠正我,我也是在学习途中的一员小白。

QML:
QML is a user interface specification and programming language. It allows developers and designers alike to create highly performant, fluidly animated and visually appealing applications. QML offers a highly readable, declarative, JSON-like syntax with support for imperative JavaScript expressions combined with dynamic property bindings

QML是一种用户界面规范和编程语言。它允许开发人员和设计人员创建高性能、流畅的动画和具有视觉吸引力的应用程序。QML提供了高度可读的、声明式的、类似json的语法,支持命令式JavaScript表达式和动态属性绑定。它是一种声明式语言。

Qt Quick

Qt Quick is the standard library of types and functionality for QML. It includes visual types, interactive types, animations, models and views, particle effects and shader effects. A QML application developer can get access to all of that functionality with a single import statement.
The QtQuick QML library is provided by the Qt Quick module. For in-depth information about the various QML types and other functionality provided by Qt Quick, please see the Qt Quick module documentation.

Qt Quick是QML类型和功能的标准库。它包括视觉类型,交互类型,动画,模型和视图,粒子效果和着色效果。QML应用程序开发人员可以通过一条import语句访问所有这些功能。
QtQuick QML库由QtQuick模块提供。有关Qt Quick提供的各种QML类型和其他功能的详细信息,请参阅Qt Quick模块文档。

它就是QML类型的功能标准库,工具集。

Qt Quick 使用 QML 作为声明语言,来设计以用户界面为中心的应用程序。严格来讲,Qt Quick 是一个用于 QML 的工具包,允许以 QML 语言来开发图形界面。当然,还有其他的工具包用于 QML:

图形化的(例如:Sailfish Silica 或 BlackBerry Cascades)
非图形的(例如:QBS - QMake/CMake/make…的一个替代品)

Qt Widget
我们常用的QLabel、 QPushButton、QWidget等等常见的桌面应用程序设计窗口类。

Qt QML

The Qt QML module provides a framework for developing applications and libraries with the QML language. It defines and implements the language and engine infrastructure, and provides an API to enable application developers to extend the QML language with custom types and integrate QML code with JavaScript and C++. The Qt QML module provides both a QML API and a C++ API.
Note that while the Qt QML module provides the language and infrastructure for QML applications, the Qt Quick module provides many visual components, model-view support, an animation framework, and much more for building user interfaces.

Qt QML模块为使用QML语言开发应用程序和库提供了一个框架。它定义并实现了语言和引擎基础结构,并提供了一个API,使应用程序开发人员能够使用自定义类型扩展QML语言,并将QML代码与JavaScript和c++集成在一起。Qt QML模块同时提供QML API和c++ API。
请注意,Qt QML模块为QML应用程序提供了语言和基础设施,而Qt Quick模块为构建用户界面提供了许多可视化组件、模型-视图支持、动画框架等。

应用场景区别

QWidget

传统桌面应用: QWidget适用于传统的桌面应用程序,如文件管理器、图像编辑器、IDE等。对于已有大量QWidget代码的成熟应用程序,继续使用QWidget可能更加方便,因为迁移到QML可能需要重写大部分界面代码。 适用于需要使用传统控件构建复杂用户界面的场景

丰富的GUI控件: QWidget提供了丰富的GUI控件和功能,适用于需要大量传统控件的应用。

QML

移动应用和嵌入式应用: QML适用于创建现代、动态、具有良好交互性的移动应用和嵌入式应用。它对于触摸屏和手势输入有很好的支持。

动态、流畅的界面: QML基于声明性语法,可以通过描述界面的状态和交互来创建动态和流畅的用户界面。适用于需要高度交互和动画效果的应用。

跨平台开发: QML是为了支持多平台和多设备而设计的,可以创建具有自适应和响应式设计的界面,使应用能够在不同屏幕尺寸和设备上运行。

前端开发: 对于前端开发人员,QML提供了更直观和灵活的开发方式,使用JavaScript语法,降低了学习曲线。
与C++结合: QML可以与C++代码结合使用,通过Qt的信号和槽机制,使得QML和C++能够紧密协作。这使得在性能敏感的应用中,可以使用C++编写底层逻辑。

快速迭代的原型设计: QML适用于快速迭代的原型设计,开发人员可以迅速进行界面设计和测试。

总体而言,QWidget适用于传统桌面应用,而QML适用于现代移动应用和嵌入式应用,尤其在需要创建动态、流畅、跨平台的界面时。在实际项目中,有时候也可能选择混合使用QWidget和QML,以发挥它们各自的优势。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道阻且长,行则降至

无聊,打赏求刺激而已

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值