PropertyAction QML 类型
指定动画过程中的即时属性改变。 更多信息...
导入语句 | import QtQuick |
继承 |
属性
- exclude : list
- properties : string
- property : string
- target : QtObject
- targets : list
[只读]
- value : var
详细说明
PropertyAction 用来指定动画过程中的即时属性改变。属性改变不会被动画化。
在动画过程中设置非动画属性值时非常有用。
例如,这里是一个SequentialAnimation
,它会将图像的opacity
属性设置为.5
,然后动画图像的宽度,再将opacity
属性设置回1
SequentialAnimation { PropertyAction { target: img; property: "opacity"; value: .5 } NumberAnimation { target: img; property: "width"; to: 300; duration: 1000 } PropertyAction { target: img; property: "opacity"; value: 1 } }
PropertyAction 还可用于设置在 Transition
过程中属性改变应发生的确切点。例如,如果在一个 State
中使用 PropertyChanges
来旋转某个元素,可以这样实现
Item { width: 400; height: 400 Rectangle { id: rect width: 200; height: 100 color: "red" states: State { name: "rotated" PropertyChanges { target: rect; rotation: 180; transformOrigin: Item.BottomRight } } transitions: Transition { RotationAnimation { duration: 1000; direction: RotationAnimation.Counterclockwise } } MouseArea { anchors.fill: parent onClicked: rect.state = "rotated" } } }
但是,使用此代码,transformOrigin
不会被设置为动画结束时的值,因为 State
被用来定义过渡的结束值。动画将以默认的 transformOrigin
旋转,然后跳到 Item.BottomRight
。要修复这个问题,需要在 RotationAnimation
开始之前插入一个 PropertyAction
transitions: Transition { SequentialAnimation { PropertyAction { target: rect; property: "transformOrigin" } RotationAnimation { duration: 1000; direction: RotationAnimation.Counterclockwise } } }
这立即将 transformOrigin
属性设置为 Transition
结束状态中定义的值(即 PropertyAction 对象中定义的值),从而使旋转动画以正确的变换原点开始。
另见Qt Quick 中的动画和转换 和 Qt Qml.
属性文档
value : var |
此属性包含要设置的属性值。
如果将 PropertyAction 定义在 Transition 或 Behavior 内,则此值默认为 Transition 的最终状态中定义的值,或者触发 Behavior 的属性变化值。
© 2024 Qt 公司有限公司。本文档中的文档贡献归其各自所有者所有。本提供的文档是根据自由软件基金会发布并由其发布的GNU自由文档许可证版本1.3 下的条款许可的。Qt 以及相应的标志是芬兰和/或其他国家和地区的 Qt 公司的商标。所有其他商标均归其各自所有者所有。