QML Basic Types

QML支持许多基本类型。

基本类型是指引用简单值的类型,如int或string。这与QML对象类型不同,QML对象类型引用具有属性、信号、方法等的对象。与对象类型不同,基本类型不能用于声明QML对象:例如,不可能声明int{}对象或size{}对象。

基本类型可用于指:

> 单个值(例如int指向单个数字,var指向单个项列表)

> 包含一组简单属性-值对的值(例如,size指具有宽度和高度属性的值)

当一个变量或属性持有一个基本类型并将其赋值给另一个变量或属性时,将生成该值的副本。在JavaScript中,这个值被称为原始值。

Supported Basic Types

引擎默认支持一些基本类型,不需要使用import语句,而其他类型则需要客户端导入提供它们的模块。下面列出的所有基本类型都可以用作QML文档中的属性类型,但有以下例外:

> list必须与QML对象类型结合使用

> 不能直接使用枚举,因为枚举必须由已注册的QML对象类型定义

Basic Types Provided By The QML Language

QML语言中本地支持的基本类型如下:

bool

Binary true/false value

double

Number with a decimal point, stored in double precision

enumeration

Named enumeration value

int

Whole number, e.g. 0, 10, or -20

list

List of QML objects

real

Number with a decimal point

string

Free form text string

url

Resource locator

var

Generic property type

Basic Types Provided By QML Modules

QML模块可以用更基本的类型扩展QML语言。例如,QtQuick模块提供的基本类型如下所示:

date

Date value

point

Value with x and y attributes

rect

Value with x, y, width and height attributes

size

Value with width and height attributes

Qt全局对象为操作基本类型的值提供了有用的函数。

目前只有由Qt提供的QML模块可以提供它们自己的基本类型,但是在Qt QML的未来版本中这可能会改变。为了使用特定QML模块提供的类型,客户端必须在其QML文档中导入该模块。

Property Change Behavior for Basic Types

一些基本类型有属性:例如,字体类型有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
}

相反,对象类型的属性会发出它们自己的属性更改信号,而对象类型属性的属性更改信号处理程序仅在将属性重新分配给不同的对象值时才会调用。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值