PropertyAction QML 类型

指定动画过程中的即时属性改变。 更多信息...

导入语句import QtQuick
继承

Animation

属性

详细说明

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.

属性文档

properties : string

property : string

target : QtObject

targets : list<QtObject> [只读]

这些属性确定受此操作影响的项目及其属性。

这些属性在不同情况下如何解释的详细信息请参阅相应的PropertyAnimation 文档。

另请参阅exclude


exclude : list<QtObject> [只读]

此属性包含不应受此操作影响的对象。

另请参阅targets


value : var

此属性包含要设置的属性值。

如果将 PropertyAction 定义在 TransitionBehavior 内,则此值默认为 Transition 的最终状态中定义的值,或者触发 Behavior 的属性变化值。


© 2024 Qt 公司有限公司。本文档中的文档贡献归其各自所有者所有。本提供的文档是根据自由软件基金会发布并由其发布的GNU自由文档许可证版本1.3 下的条款许可的。Qt 以及相应的标志是芬兰和/或其他国家和地区的 Qt 公司的商标。所有其他商标均归其各自所有者所有。