このページでは

C

Transition QML Type

状態の変化時に発生するアニメーション遷移を定義します。詳細...

Import Statement: import QtQuick
Since: Qt Quick Ultralite 1.0

プロパティ

詳細説明

トランジションは、State の変更が発生した際に適用されるアニメーションを定義します。

たとえば、次のRectangle には、デフォルト状態とmoved 状態の2つの状態があります。moved 状態では、矩形の位置が(50, 50)に変更されますが、これはTransitionによってEasing.InOutQuad を使用してアニメーション化されます。これにより、矩形の状態がデフォルトからmoved に変更されたことが視覚的に示されます。

import QtQuick 2.15

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

    MouseArea {
        id: mouseArea
        anchors.fill: parent
    }

    states: State {
        name: "moved"; when: mouseArea.pressed
        PropertyChanges { target: rect; x: 50; y: 50 }
    }

    transitions: Transition {
        NumberAnimation { properties: "x,y"; easing.type: Easing.InOutQuad }
    }
}

この例では、NumberAnimation に対してtofrom の値が使用されていない点に注意してください。利便性のため、これらのプロパティは状態変更の前後で、自動的にx およびy の値に設定されます。from の値はx およびy の現在の値から、to の値はPropertyChanges オブジェクトから提供されます。必要に応じて、tofrom の値を指定して、デフォルト値を上書きすることも可能です。

デフォルトでは、親アイテムの状態が変更されるたびに、Transitionのアニメーションが適用されます。Transitionのfrom およびto の値を設定することで、特定の状態から別の状態へ変更される場合にのみアニメーションが適用されるように制限できます。

複数のトランジションを定義するには、Item::transitions をリストとして指定します:

    transitions: [
        Transition {
            from: "*"; to: "middleRight"
            NumberAnimation {
                properties: "x,y";
                easing.type: Easing.InOutQuad;
                duration: 2000;
            }
        },
        Transition {
            from: "*"; to: "bottomLeft";
            NumberAnimation {
                properties: "x,y";
                easing.type: Easing.InOutQuad;
                duration: 200;
            }
        },
        //If any other rectangle is clicked, the icon will return
        //to the start position at a slow speed.
        Transition {
            from: "*"; to: "*";
            NumberAnimation {
                easing.type: Easing.OutExpo;
                properties: "x,y";
                duration: 4000;
            }
        }
    ]

複数のトランジションが指定されている場合、特定の状態変化に対しては、1つ(最も一致する)トランジションのみが適用されます。上記の例で、Rectangleが"middleRight" または"bottomLeft" 以外の状態に入った場合、3番目のトランジションが実行され、アイコンが開始点に移動します。

状態変化に対して、Behavior と同じプロパティに一致するTransitionが指定されている場合、その状態変化におけるBehavior は、Transitionのアニメーションによって上書きされます。

アニメーションとトランジション」、「状態の使用」、「状態とトランジションも参照してください

プロパティのドキュメント

animations : list<Animation> [default]

このプロパティには、このトランジションで実行されるアニメーションのリストが格納されます。

Item {
    transitions: Transition {
        PropertyAnimation { duration: 3000 }
        ColorAnimation { duration: 3000 }
    }
}

最上位のアニメーションは並列で実行されます。これらを順次実行するには、SequentialAnimation 内で定義してください:

Item {
    transitions: Transition {
        SequentialAnimation {
            PropertyAnimation { duration: 3000 }
            ColorAnimation { duration: 3000 }
        }
    }
}

from : string

to : string

これらのプロパティは、遷移をトリガーする状態の変化を示します。

これらのプロパティのデフォルト値は「*」(つまり、任意の状態)です。

たとえば、次の遷移では、to およびfrom プロパティが設定されていないため、2 つの状態の間で切り替わる際(つまり、マウスが押されたときと離されたとき)、常にアニメーションが適用されます。

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

    MouseArea { id: mouseArea; anchors.fill: parent }

    states: State {
        name: "brighter"; when: mouseArea.pressed
        PropertyChanges { target: rect; color: "yellow" }
    }

    transitions: Transition {
        ColorAnimation { duration: 1000 }
    }
}

トランジションが次のように変更された場合:

transitions: Transition {
    to: "brighter"
    ColorAnimation { duration: 1000 }
}

アニメーションは、デフォルトの状態から「brighter」の状態へ切り替わる時のみ適用されます(つまり、マウスが押された時のみ適用され、離された時には適用されません)。

カンマ区切りの文字列を使用することで、複数の `to ` および `from ` 値を設定できます。

特定のQtライセンスの下で利用可能です。
詳細はこちら。