学习QML的时候,第一个疑问往往就是什么是Qt Quick,它和QML到底是什么关系,搜索QML教程,为什么出来的都是Qt Quick相关的东西?
简单来时,Qt-Quick模块是编写QML应用程序的标准库。类似于C++标准库与C++语言的关系。Qt Quick模块提供了两种接口:使用QML语言创建应用的QML接口和使用C++语言扩展QML的C++接口。使用Qt Quick模块,设计人员和开发人员可以轻松地构建用户界面,并且在需要的时候,可以将这些用户界面连接到任何C++后端。
Qt Quick包含了以下⼏种技术:
QML:使⽤于⽤户界⾯的标识语⾔
JavaScript:动态脚本语⾔
Qt C++:具有⾼度可移植性的C++库
理解什么是Qt Quick需要理解上面这张图。主要是理解下面这四部分:
QML Document
就是qml文件。编写qml文件需要使用到下层的elements。
QML visiual elements
可以理解为Qt Quick库里面使用QML语言写好的一些类型的元素。如Rectangle、Text等等。就像C++标准库里包含了使用C++写好的string,vector......
这些elements的支撑来源于下层的engine
Declarative engine
QML(Qt Meta-Object Language,Qt元对象语言)是一种用于描述应用程序用户界面的声明式编程语言。相比传统的命令式语言,声明式语言使用更方便,在编写UI时可以极大地简化代码(但对于复杂的业务逻辑层面,还是需要时用命令式语言)。Declarative engine为QML提供了支撑,engine内部使用了Qt Quick框架、JavaScript框架、C++扩展框架;
Native Extensions
使用C++语言可以轻松扩展QML visiual elements,添加新的元素。