QML术语词汇表

QML和Qt Quick文档中使用的术语词汇表

常见术语

术语

定义

QML

QML应用程序所使用的语言。该语言的架构和引擎由Qt QML模块实现。

Qt Quick

QML语言的标准类型和功能库,由Qt Quick模块提供,可以通过“import QtQuick”访问。

类型

在QML中,类型可能指的是值类型或QML对象类型。

QML语言提供了许多内置的值类型,而Qt Quick模块提供了各种Qt Quick类型用于构建QML应用程序。类型也可以通过第三方开发者通过(模块)提供,或者由应用程序开发者在应用程序本身中通过QML文档提供。

有关更多详细信息,请参见QML类型系统。

值类型

值类型是一种简单的类型,例如 intstringbool。与对象类型不同,不能从值类型实例化对象;例如,无法创建一个具有属性、方法、信号等的 int 对象。

值类型以及对象类型通常属于一个 QML 模块。您必须导入该模块才能使用它们。某些类型是语言内置的,例如 int、bool、double、string,还有 QtObject 和 Component。

有关更多详细信息,请参阅 QML 类型系统。

对象类型

QML 对象类型是一种可以由 QML 引擎实例化的类型。

QML 类型可以通过以大写字母开头的 .qml 文件中的文档定义,也可以通过基于 QObject 的 C++ 类定义。

有关更多详细信息,请参阅 QML 类型系统。

对象

一个QML对象是QML对象类型的一个实例。

当引擎处理对象声明时,会创建这些对象,声明中指定了要创建的对象以及为每个对象定义的属性。

此外,对象可以在运行时通过Component.createObject()和Qt.createQmlObject()动态创建。

另请参阅 Lazy Instantiation

组件

组件是一个模板,用于创建QML对象或对象树。当QML引擎加载文档时,它会被生成。一旦加载完成,它可以用来实例化它所代表的对象或对象树。

此外,Component类型是一种特殊类型,可以在文档内联中声明一个组件。Component对象也可以通过Qt.createComponent()动态创建,以动态创建QML对象。

文档

一个QML文档是一段自包含的QML源代码,它以一条或多条导入语句开始,并包含一个单一顶级对象声明。文档可以存在于.qml文件或文本字符串中。

如果它被放置在一个以大写字母开头的.qml文件中,引擎会将该文件识别为QML类型的定义。顶级对象声明封装了将由该类型实例化的对象树。

属性

属性是对象类型的一个属性,具有名称和关联的值;这个值可以从外部读取(在大多数情况下,也可以写入)。

一个对象可以有一个或多个属性。一些属性与画布相关联(例如,x、y、宽度、高度和不透明度),而其他属性可能是特定于该类型的数据(例如,Text类型的“text”属性)。

有关更多详细信息,请参阅QML对象属性。

绑定

绑定是一个JavaScript表达式,它“绑定”到一个属性。该属性在任何时间点的值将是评估该表达式返回的值。

有关更多详细信息,请参阅属性绑定。

信号

信号是来自QML对象的通知。当一个对象发出信号时,其他对象可以通过信号处理器接收并处理这个信号。

大多数QML对象的属性都有一个变化信号,以及一个相关的变化信号处理器,客户端可以定义这个处理器来实现功能。例如,MouseArea类型实例的“onClicked()”处理器可以在应用程序中定义,以播放声音。

有关更多详细信息,请参阅信号和处理器事件系统。

信号处理器

信号处理器是由信号触发的表达式(或函数)。在C++中,它也被称为“槽”。

有关更多详细信息,请参阅信号和处理器事件系统。

延迟实例化 .. _lazy-instantiation:

对象实例可以在运行时“延迟”实例化,以避免在需要之前执行不必要的工作。Qt Quick 提供了 Loader 类型,使延迟实例化更加方便。