QT Widgets和QML区别

2 篇文章 0 订阅

一.Qt Widgets适合传统的桌面程序开发

二.Qt Quick 是 Qt 4.7 主推的技术, Qt 官网介绍

Qt Quick 是一种高级用户界面技术,使用它可轻松用于移动开发、嵌入式设备使用的动态触摸式界面和轻量级应用程序的开发。在 Qt 5 中,QML 已经不再局限于移动开发,也可用于开发传统的桌面程序。三种全新的技术共同构成了 Qt Quick 用户界面创建工具包:一个改进的 Qt Creator IDE、一种新增的简便易学的语言 (QML) 和一个新加入 Qt 库中名为QtDeclarative 的模块,这些使得 Qt 更加便于不熟悉 C++ 的开发人员和设计人员使用。

  • 相比之下,Qt Widgets 更“老”、更成熟,而 QML/Qt Quick 则更“新”、更“现代”。
  • 无论如何,Qt Widgets 和 QML/Qt Quick 都可以在多个平台上使用(Windows、Linux、OS X…)。
  • 对于传统的桌面程序来说,优先考虑使用 Qt Widgets
  • 若要开发更“现代”的 UI 与高级应用,建议使用 Qt5.x + QML 2.x + QtQuick 2.x。
  • 对于移动端开发来说,建议使用 QML,协同 JavaScript,简单快捷、渲染效果更佳、界面更炫酷。不建议使用 Qt Widgets,其显示效果、适应性都不好。

Qt Quick 是 QML 类型和功能的标准库,包括视觉类型、交互式类型、动画、模型和视图、粒子效果和着色效果。

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

QML 由 Qt QML 模块提供,QtQuick QML 库由 Qt Quick 模块提供。

  • Qt QML 模块:为 QML 应用程序提供了语言和引擎基础结构。
  • Qt Quick 模块:提供了许多可视化组件、模型视图支持、动画框架以及用于构建用户界面的更多功能。

三.QML/Qt Quick

在我看来,主要归结为以下几点:

    战略性发展

    Qt 想用 QML/Qt Quick 一统天下(桌面 + 移动端)。梦想还是要有的,万一实现了呢?

    众所周知,Qt 为跨平台而生,而 QML/Qt Quick 作为 Qt 新生力量,完完全全继承了 Qt 包罗万象的特点,它的诞生为 Qt 进军移动领域迈出了历史性的一步。

    随着 Qt 的不断迭代,QML/Qt Quick 也可用于开发传统的桌面程序,而且效率越来越高,这样以来,便可以用 QML/Qt Quick 做任何你想做的事情。

    QML/QtQuick 作为 Qt 的绝对核心,特别是对于界面要求较高的开发者来说,其作用更为重要。

    开发效率的提升

    传统上的 native UI 开发普遍使用 C++、C#、Objective-C 等语言。但近年来,本地应用使用 HTML5 + JS 也成为了一种趋势。一方面硬件资源越来越丰富,另一方面 Web 技术让 JS 的解析速度更快。

    除此之外,其中一部分功劳要归功于 Google,由于开源了其 NB 的 JS 引擎,Node.js 加上一个前端框架也可以开发本地应用了。例如:Electron - 构建跨平台的桌面应用程序。

    QML/Qt Quick 和 Node.js 类似,也提供了一系列 JS 和 C++ 交互的接口,便于 JS 和 C++ 通信。

    UI 与逻辑分离

    尽管对于大多数情况而言,在编写应用程序时只需 QML 和 JavaScript,但在有些情况下需要计算密集型任务(例如:复杂图像处理、物理引擎),并且将需要处理器竭力提供所有可用性能。

    在这些情况下,QML 应用开发适合使用 C++ 来进行扩展,以便在后台执行资源密集型任务,而界面设计和一些简单逻辑(例如:按钮变色、换肤、变形等)都可以在 JS 中完成。这样避免了传统应用开发前端设计和后台逻辑混合的情况,让界面设计者专心设计界面成为了可能。

    由于 QML 是在 Qt 上构建的,因此其继承了 Qt 框架中的大部分功能,尤其是信号和槽机制以及元对象系统。使用 C++ 创建的数据可从 QML 直接访问,而 QML 对象也可从 C++ 代码进行访问。

Qt是一个跨平台的C++应用程序框架,它支持用户界面设计、网络编程、多线程等多种功能。Qt中的样式表(Stylesheet)和QML是两种不同的技术,用于设计和定制用户界面的外观和行为。 样式表(Stylesheet)是类似于HTML中CSS的技术,它允许开发者通过声明性的方式定义控件的样式。在Qt中,样式表可以用来描述按钮、窗口、滑动条等控件的外观,比如颜色、字体、边框等。样式表在Qt Widgets应用程序中使用非常广泛,它使得开发者能够统一地控制整个应用程序的视觉风格,而且样式表是基于CSS的,因此开发者可以利用CSS已有的知识和经验来设计界面QMLQt Modeling Language)是一种声明式的、面向对象的标记语言,主要用于开发基于QML的用户界面,特别是那些需要高度动态和流畅交互的界面QML强调的是布局和动画,它使用JavaScript作为其脚本语言。QML允许开发者创建复杂的用户界面和动画效果,并且支持组件化设计。它特别适合于移动和嵌入式设备上的应用开发。 总结一下,Qt样式表和QML区别主要在于: 1. 应用场景:样式表主要用于Qt Widgets应用程序中对控件样式的定制,而QML则主要应用于创建动态、高度交互的用户界面,特别是用于移动端或富客户端应用。 2. 语法和功能:样式表使用CSS类似的语法,QML则有自己的语法规则,它不仅支持样式的定义,还支持布局、动画等更多交互元素的创建。 3. 技术集成:样式表与Qt Widgets紧密集成,QML则是通过QML引擎来支持,并且可以与C++代码紧密集成,甚至可以直接在QML中嵌入C++代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

于大博

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值