Qml-Behavior的使用
Behavior的概述
- Behavior:当属性值发生变化时的默认动画
- 属性animation : Animation:属性变化的动画
- 属性enabled : bool:属性值变换时是否使能Behavior(行为);
- 属性targetProperty.name : string: 只读,目标属性名称
- 属性targetProperty.object : QtObject:只读,目标属性对象
- 注意:一个属性只能一个Behavior(行为),如果想给一个Behavior设置多个动画,可以使用并行动画或串行动画
- 注意:如果状态(State)更改的属性的和Behavior(行为)绑定的属性为同一个,状态的过渡动画会覆盖Behavior(行为)的动画
Behavior的实例代码
import QtQuick
//Behavior 定义属性值发生改变时的默认动画
//注意 一个属性不能指定多个行为动画,如果需要指定多个行为动画,可以使用并行(ParallelAnimation)或者线性动画(SequentialAnimation)
//如果状态(State)更改的属性与Behavior绑定的属性相同时,状态(State)的动画会覆盖Behavior的动画。
Item {
id: itemTransform
Rectangle {
id:idRec
width: 100; height: 100
color: "blue"
Behavior on height {
id: idBe
//行为动画
animation: NumberAnimation{
duration: 1000
}
}
MouseArea{
anchors.fill: parent
onClicked: parent.height = (parent.height === 100 ? 50 : 100);
}
onHeightChanged: {
console.log("be targetValue = ",idBe.targetValue," be enable = ",idBe.enabled,"be tagpro name = ",idBe.targetProperty.name);
if(idBe.targetProperty.object == idRec)
console.log("be tagpro obj equal");
}
}
}
Behavior实例代码运行结果如下:
1.当点击 矩形区域,高度会从100~50 或者从50~100;会打印属性targetProperty.name 、 **targetProperty.object **相关的信息;
2.输出信息如下
3.效果图如下: