引言
用了N年的QWidget,因为项目需求而开始学习QML做一些动态的界面,下面开始记录学习QML的新路历程。
注:学习有误的望指点一二,不喜勿喷!!!
基本类型的属性更改信号
一些基本类型具有属性(例如:Text类型具有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
// 更改任何字体属性,或将属性重新分配为其他字体值,将调用onFontChanged处理程序
Keys.onDigit1Pressed: font.pixelSize += 1
Keys.onDigit2Pressed: font.b = !font.b
Keys.onDigit3Pressed: font = otherText.font
}
相反,对象类型的属性会发出自己的属性更改信号,并且仅在将属性重新分配给其他对象值时才调用对象类型属性的属性更改信号处理程序。