Qml可以使用状态来驱动界面,但这种变化是“突变”的,从用户角度来说是不友好的,需要使用Transition(过渡)来使状态的变化比较平滑。
Transition的属性
from/to:指定过渡的起始和结束状态。默认值是“*”,可以匹配所有状态。
animations:动画列表,默认在Transition添加动画的执行顺序是并行的,target属性无需指定(因为State中已经指定了)。
代码实例
import QtQuick 2.0Rectangle{id:rootItemwidth:360height: 240color: "white"Rectangle{id:rectcolor: "gray"width: 50height: 50anchors.centerIn: parentMouseArea{id:mouseAreaanchors.fill: parent}//定义状态states:[State{name: "pressed"when: mouseArea.pressedPropertyChanges {target: rectcolor:"green"scale:2}}]//定义过渡transitions: [Transition {//没有设置from/to,过渡关联任何动画//比例动画NumberAnimation {property: "scale"duration: 1000easing.type: Easing.InOutQuad}//颜色变化ColorAnimation {duration: 600} }]}
}