零基础学Qt 6编程
上QQ阅读APP看书,第一时间看更新

1.1.5 Qt Quick和QML介绍

Qt Quick作为一种新的界面技术,已经经过了十几年的发展。对于初学者而言,其实只需要学习最新版本的Qt Quick即可。不过为了避免被一些以前的术语或概念影响,读者可以先了解一下Qt Quick的由来和发展过程,今后如果看到一些相关名词,知道其作用即可。

1.由来和发展

自2005年Qt 4发布以来,Qt已成功在桌面和移动系统开发了众多应用。但是随后几年,计算机用户的使用模式发生了翻天覆地的变化:用户逐步从使用固定的PC转换到使用便携式计算机和现代移动设备。传统的桌面系统被越来越多的触屏式智能手机和平板电脑所取代,经典的窗口界面时代已经成为过去。使用Qt的经典C++代码实现兼容不同大小屏幕的程序变得愈加困难。在这样的背景下,急需一种全新的界面开发工具适应现代化界面开发工作。

Qt 4被设计用来开发适用于所有主流平台的桌面应用。为了给所有的主流桌面和移动系统提供基于触摸的现代化用户界面,从2010年发布的Qt 4.7开始引入了Qt Quick技术。当时对Qt Quick的定义为:“一种高级用户界面技术,可以轻松创建供移动和嵌入式设备使用的动态触摸式界面和轻量级应用程序。”Qt Quick主要由一个改进的Qt Creator IDE(其中包含了Qt Quick设计器)、新增的简单易学的QML(Qt Meta-Object Language,Qt元对象语言)和新加入Qt库中名为QtDeclarative的模块等三部分组成。这些使得QML更方便不熟悉C++的开发人员和设计人员使用。

Qt 4中,QML应用使用图形视图框架渲染;Qt 5则改为使用更先进、性能更好的OpenGL场景图架构。由于渲染架构的改变,Qt 5废弃了QtDeclarative模块,将所有Qt Quick的内容划分为两个相对独立的模块:Qt QML和Qt Quick。基于兼容性目的,QtDeclarative模块一开始并没有完全移除,而是被移动到新的Qt Quick 1模块中。这个模块只是为向前兼容而存在,到Qt 5.6发布时已经被彻底移除。相对于Qt Quick 1,Qt 5中的Qt Quick模块是2.x版本,所以也被称为Qt Quick 2。

2.Qt 6中QML的概念

QML是一种用于描述应用程序用户界面的声明式编程语言,它使用一些可视组件以及这些组件之间的交互和关联来描述用户界面。QML是一种高可读性的语言,可以使组件以动态方式进行交互,并且组件在用户界面中可以很容易地实现自定义和重复使用。QML允许开发者和设计者以类似的方式创建具有流畅动画效果、极具视觉吸引力的高性能应用程序。

QML提供了一个具有高可读性的类似JSON的声明式语法,并提供了必要的JavaScript语句和动态属性绑定的支持。QML语言和引擎框架由Qt QML模块提供。Qt QML模块为QML语言开发应用程序和库提供了一个框架,它定义并实现了语言及其引擎架构,并且提供了一个接口,允许应用开发者以自定义类型和集成JavaScript、C++代码的方式来扩展QML语言。Qt QML模块提供了QML和C++两套接口。

3.Qt 6中Qt Quick的概念

广义上来说,Qt Quick是Qt中基于QML语言的一种用户界面技术的统称,它是QML、JavaScript和C++等多种技术的集合。具体来说,在Qt框架中Qt Quick模块是QML类型和功能的标准库,包含了可视化类型、交互类型、动画、模型、视图、粒子特效和渲染特效等。

在QML应用程序中,我们可以通过一个简单的import语句来使用Qt Quick模块提供的所有功能。Qt QML模块提供了QML的引擎和语言基础,而Qt Quick模块提供了QML创建用户界面所需的所有基本类型。Qt Quick模块提供了一个可视画布,并提供了丰富的类型,用于创建可视化组件、接收用户输入、创建数据模型和视图、生成动画效果等。Qt Quick模块提供了两种接口:使用QML语言创建用户界面的QML接口和使用C++语言扩展QML的C++接口。使用Qt Quick模块,设计人员和开发人员可以轻松地构建流畅的动态式QML用户界面,并且在需要的时候将这些用户界面连接到任何C++后端。

从Qt 5.7开始,Qt Quick引入了一组界面控件,使用这些控件可以更简单地创建完整的应用界面。这些控件包含在Qt Quick Controls模块中,包括各种窗口部件、视图和对话框等。