QML基本类型
学习QML我们首先得弄明白,它有那些类型,支持C++常见的数据类型,包括整形,浮点型,字符串,布尔型,在QML中将这种仅指向简单的数据类型称为基本数据类型,比如int和string相对于,将可以包含的其他属性,能够具有的信号和函数等的类型称为对象类型,不同于对象类型,基本类型不能用来声明一个QML对象,比如int{}是不允许的,基本类型一般用于以下二种值:
- 单值:如int是一个单个数字,var可以是项目列表。
- 一个包含了一组简单的“属性一值“对的值,如size指定的值包含了width和height属性。
QML默认支持的基本数据类型
类型 | 描述 |
---|---|
bool | 布尔值 true/false |
double | 双精度数字类型 |
enumeration | 枚举 |
int | 整型 |
list | QML 对象列表 |
real | 实型(C++中 float) |
string | 字符串类型 |
url | 资源定位器 |
var | 通用属性类型 |
QML模块提供的基本数据类型
类型 | 描述 |
---|---|
point | 具有 x 和 y 属性坐标值 |
rect | 具有 x,y,width,height属性的值 |
size | 具有 width 和 height 属性的值 |
color | ARGB颜色值,可以用多种方法表示 |
font | QFont的QML类型,包含了QFont属性 |
matrix4x4 | 一个4行4列的矩阵 |
quaternion | 一个四元数,包含一个标量以及x,y和z值属性 |
vector2d | 二维向量,包含x和y二个属性 |
vector3d | 三维向量,包含x,y,z这三个属性 |
vector4d | 四维向量,包含x,y,z和w这四个属性 |
date | 日期值 |
基本类型的属性变更行为
一些基本类型具有属性,例如 font类型具有pixelSize,family和bold特性。与对象类型的属性不同,基本类型的属性不提供它们自己的属性更改信号。只能为基本类型属性本身创建属性更改信号处理程序:
Text {
// 这样写无效
onFont.pixelSizeChanged: doSomething()
// 这样也是无效
font {
onPixelSizeChanged: doSomething()
}
// 这样就可以
onFontChanged: doSomething()
}
另外每当基本类型的一个特性改变时,该基本类型都会发射出自身的属性改变信号:
Text {
onFontChanged: console.log("font changed")
Text { id: otherText }
focus: true
//更改任何字体属性,或者将属性
// 重新分配给不同的字体值,将调用onFontChanged处理程序Keys
Keys.onDigit1Pressed: font.pixelSize += 1
Keys.onDigit2Pressed: font.b = !font.b
Keys.onDigit3Pressed: font = otherText.font
}