行为 QML 类型

定义属性更改的默认动画。 更多...

导入语句import QtQuick

属性

详细描述

行为定义了在特定属性值更改时要应用的默认动画。

例如,以下行为定义了一个在任何时间 Rectangle's width 值发生变化时运行的 NumberAnimation。当 MouseArea 被点击时,宽度值会改变,触发行为的动画。

import QtQuick

Rectangle {
    id: rect
    width: 100; height: 100
    color: "red"

    Behavior on width {
        NumberAnimation { duration: 1000 }
    }

    MouseArea {
        anchors.fill: parent
        onClicked: rect.width = 50
    }
}

请注意,属性不能有多个分配的行为。要在行为内提供多个动画,请使用 ParallelAnimationSequentialAnimation

如果一个 状态变化 有一个与行为相匹配的 Transition,则该状态的 Transition 动画将覆盖该状态变化的行为。有关使用行为来动画状态变化的通用建议,请参阅 使用 Qt Quick 行为与状态

另请参阅 Qt Quick 中的动画和过渡行为示例Qt Qml

属性文档

animation : Animation [默认]

此属性保存当行为被触发时要运行的动画。


enabled : bool

此属性保存当被跟踪的属性值变化时,行为是否将被触发。

默认情况下,行为处于启用状态。


targetProperty 组

targetProperty.name : string [只读,自 QtQuick 2.15]

targetProperty.object : QtObject [只读,自QtQuick 2.15起]

属性描述
name该属性持有由该Behavior控制的属性的名称。
object该属性持有由该Behavior控制的属性的对象。

此属性可用于根据所控制的属性名称或对象来定义自定义行为。

以下示例定义了在它控制的属性发生变化时,使其目标对象淡出和淡入的Behavior

// FadeBehavior.qml
import QtQuick 2.15

Behavior {
    id: root
    property Item fadeTarget: targetProperty.object
    SequentialAnimation {
        NumberAnimation {
            target: root.fadeTarget
            property: "opacity"
            to: 0
            easing.type: Easing.InQuad
        }
        PropertyAction { } // actually change the controlled property between the 2 other animations
        NumberAnimation {
            target: root.fadeTarget
            property: "opacity"
            to: 1
            easing.type: Easing.OutQuad
        }
    }
}

这可以用来在文本发生变化时对其进行动画处理

import QtQuick 2.15

Text {
    id: root
    property int counter
    text: counter
    FadeBehavior on text {}
    Timer {
        running: true
        repeat: true
        interval: 1000
        onTriggered: ++root.counter
    }
}

此QML属性是从QtQuick 2.15引入的。


targetValue : Variant [只读,自QtQuick 2.13起]

该属性持有Behavior所控制的属性的目标值。该值在动画开始之前由Behavior设置。

此属性是从QtQuick 2.13引入的。


© 2024 Qt公司。本文件中所包含的文档贡献者是各自所有者的版权。本文件中的文档是根据自由软件基金会发布的GNU自由文档许可协议版本1.3的条款许可的。Qt及其相关标志是芬兰Qt公司及其在全球的子公司的商标。所有其他商标均为其各自所有者的财产。