QML Basic Types
QML支持多种基本类型。
基本类型是指一个简单值,例如int
或string
。这与QML对象类型形成对比,它指的是具有属性,信号,方法等的对象。与对象类型不同,基本类型不能用于声明QML对象:例如,不可能声明一个int {}
对象或size {}
对象。
基本类型可用于指代:
支持的基本类型
默认情况下,引擎支持一些基本类型,并且不需要使用import语句,而其他基本类型则需要客户端导入提供它们的模块。下面列出的所有基本类型都可以用作QML文档中的属性
类型,但以下情况除外:
list
必须与QML对象类型结合使用enumeration
不能直接使用,因为枚举必须由注册的QML对象类型定义
QML语言提供的基本类型
在QML语言中原生支持的基本类型如下:
二进制真/假值 | |
带小数点的数字,以双精度存储 | |
命名枚举值 | |
整数,例如。 0,10或-20 | |
QML对象列表 | |
带小数点的数字 | |
自由格式文本字符串 | |
资源定位器 | |
通用属性类型 |
QML模块提供的基本类型
QML模块可以用更基本的类型扩展QML语言。例如,由QtQuick
模块提供的基本类型如下:
Qt全局对象提供了用于操作基本类型的值的有用函数。
目前只有Qt提供的QML模块可以提供它们自己的基本类型,然而这在未来的Qt QML版本中可能会改变。为了使用由特定QML模块提供的类型,客户端必须在QML文档中导入该模块。
基本类型的属性更改行为
一些基本类型具有属性:例如,font类型具有pixelSize
,family
和bold
属性。与对象类型的属性不同,基本类型的属性不提供自己的属性更改信号。只能为基本类型属性本身创建属性更改信号处理程序:
Text { // invalid! onFont.pixelSizeChanged: doSomething() // also invalid! font { onPixelSizeChanged: doSomething() } // but this is ok onFontChanged: doSomething() }
然而,请注意,只要属性的任何已更改,以及属性本身更改时,将会发出基本类型的属性更改信号。拿下面的代码,例如:
Text { onFontChanged: console.log("font changed") Text { id: otherText } focus: true // changing any of the font attributes, or reassigning the property // to a different font value, will invoke the onFontChanged handler Keys.onDigit1Pressed: font.pixelSize += 1 Keys.onDigit2Pressed: font.b = !font.b Keys.onDigit3Pressed: font = otherText.font }
相反,对象类型的属性发出它们自己的属性改变信号,并且仅当属性被重新分配给不同的对象值时,才调用对象类型属性的属性改变信号处理程序。
另请参见 QML类型系统。