Transition QML Type

Definiert animierte Übergänge, die bei Zustandsänderungen auftreten. Mehr...

Import Statement: import QtQuick

Eigenschaften

Detaillierte Beschreibung

Eine Transition definiert die Animationen, die bei einer Änderung von State angewendet werden sollen.

Das folgende Beispiel Rectangle hat zwei Zustände: den Standardzustand und einen zusätzlichen "verschobenen" Zustand. Im Zustand "verschoben" ändert sich die Position des Rechtecks auf (50, 50). Der hinzugefügte Übergang legt fest, dass beim Wechsel des Rechtecks zwischen dem Standard- und dem "verschobenen" Zustand alle Änderungen an den Eigenschaften x und y unter Verwendung eines Easing.InOutQuad animiert werden sollen.

import QtQuick

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 }
    }
}

Beachten Sie, dass in diesem Beispiel keine Werte für to und from für NumberAnimation erforderlich sind. Der Einfachheit halber werden diese Eigenschaften vor und nach der Zustandsänderung automatisch auf die Werte von x und y gesetzt; die Werte von from werden durch die aktuellen Werte von x und y bereitgestellt, und die Werte von to werden durch das Objekt PropertyChanges bereitgestellt. Wenn Sie möchten, können Sie die Werte to und from trotzdem angeben, um die Standardwerte zu überschreiben.

Standardmäßig werden die Animationen einer Transition bei jeder Zustandsänderung im übergeordneten Element angewendet. Die Werte für die Transition from und to können so eingestellt werden, dass die Animationen nur beim Wechsel von einem bestimmten Zustand in einen anderen angewendet werden.

Top-Level-Animationen innerhalb eines Übergangs werden parallel ausgeführt. Um sie sequentiell auszuführen, definieren Sie sie innerhalb einer SequentialAnimation:

transitions: Transition {
    to: "brighter"
    reversible: true
    SequentialAnimation {
        PropertyAnimation { property: "x"; duration: 1000 }
        ColorAnimation { duration: 1000 }
    }
}

Um mehrere Übergänge zu definieren, geben Sie Item::transitions als Liste an:

    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 and bounce.
        Transition {
            from: "*"; to: "*";
            NumberAnimation {
                easing.type: Easing.OutBounce;
                properties: "x,y";
                duration: 4000;
            }
        }
    ]

Wenn mehrere Übergänge angegeben werden, wird nur ein einziger (am besten passender) Übergang für eine bestimmte Zustandsänderung angewendet. Wenn das Rechteck im obigen Beispiel in einen anderen Zustand als "middleRight" oder "bottomLeft" übergeht, wird der dritte Übergang ausgeführt, d. h. das Symbol wird an den Anfangspunkt verschoben.

Wenn ein Zustandswechsel eine Transition hat, die mit derselben Eigenschaft wie Behavior übereinstimmt, überschreibt die Transition-Animation die Behavior für diesen Zustandswechsel.

Siehe auch Animation und Übergänge in Qt Quick, States example, Qt Quick States, und Qt Qml.

Dokumentation der Eigenschaft

from : string

to : string

Diese Eigenschaften geben die Zustandsänderungen an, die den Übergang auslösen.

Der Standardwert für diese Eigenschaften ist "*" (d. h. ein beliebiger Zustand).

Für den folgenden Übergang wurden beispielsweise die Eigenschaften to und from nicht festgelegt, so dass die Animation immer beim Wechsel zwischen den beiden Zuständen (d. h. beim Drücken und Loslassen der Maus) angewendet wird.

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 }
    }
}

Wenn der Übergang wie folgt geändert wird:

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

Die Animation würde nur beim Wechsel vom Standardzustand in den "helleren" Zustand angewendet (d. h. wenn die Maus gedrückt wird, aber nicht beim Loslassen).

Mehrere Werte für to und from können durch eine kommagetrennte Zeichenkette festgelegt werden.

Siehe auch reversible.


animations : list<Animation> [default]

Diese Eigenschaft enthält eine Liste der Animationen, die für diesen Übergang ausgeführt werden sollen.

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

Die Animationen der obersten Ebene werden parallel ausgeführt. Um sie sequentiell auszuführen, definieren Sie sie innerhalb einer SequentialAnimation:

transitions: Transition {
    to: "brighter"
    reversible: true
    SequentialAnimation {
        PropertyAnimation { property: "x"; duration: 1000 }
        ColorAnimation { duration: 1000 }
    }
}

enabled : bool

Diese Eigenschaft gibt an, ob der Übergang beim Wechsel vom Zustand from zum Zustand to ausgeführt wird.

Standardmäßig ist eine Transition aktiviert.

Beachten Sie, dass das Deaktivieren einer Transition unter Umständen dazu führen kann, dass eine andere Transition an ihrer Stelle verwendet wird. Im folgenden Beispiel wurde der erste Übergang zwar so eingestellt, dass er den Wechsel von "state1" zu "state2" animiert, aber dieser Übergang wurde durch die Einstellung von enabled auf false deaktiviert, so dass ein solcher Zustandswechsel stattdessen durch den zweiten Übergang animiert wird.

Item {
    states: [
        State { name: "state1" },
        State { name: "state2" }
    ]
    transitions: [
        Transition { from: "state1"; to: "state2"; enabled: false },
        Transition {
            // ...
        }
    ]
}

reversible : bool

Diese Eigenschaft legt fest, ob der Übergang automatisch rückgängig gemacht werden soll, wenn die Bedingungen, die diesen Übergang ausgelöst haben, umgekehrt werden.

Der Standardwert ist false.

Standardmäßig laufen die Übergänge parallel und werden auf alle Zustandsänderungen angewendet, wenn die Zustände from und to nicht gesetzt wurden. In diesem Fall wird der Übergang automatisch angewendet, wenn eine Zustandsänderung rückgängig gemacht wird, und es ist nicht notwendig, diese Eigenschaft zu setzen, um den Übergang rückgängig zu machen.

Wenn jedoch SequentialAnimation verwendet wird oder die Eigenschaften from oder to festgelegt wurden, muss diese Eigenschaft festgelegt werden, um einen Übergang umzukehren, wenn ein Zustandswechsel rückgängig gemacht wird. Der folgende Übergang wendet zum Beispiel eine sequenzielle Animation an, wenn die Maus gedrückt wird, und kehrt die Reihenfolge der Animation um, wenn die Maus losgelassen wird:

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

    TapHandler { id: tapHandler }

    states: State {
        name: "brighter"
        when: tapHandler.pressed
        PropertyChanges { target: rect; color: "lightsteelblue"; x: 50 }
    }

    transitions: Transition {
        to: "brighter"
        reversible: true
        SequentialAnimation {
            PropertyAnimation { property: "x"; duration: 1000 }
            ColorAnimation { duration: 1000 }
        }
    }
}

Wenn der Übergang die Werte to und reversible nicht gesetzt hätte, würde der Übergang beim Loslassen der Maus die PropertyAnimation vor der ColorAnimation abspielen, anstatt die Reihenfolge umzukehren.


running : bool [read-only]

Diese Eigenschaft gibt an, ob der Übergang gerade läuft.

Hinweis: Im Gegensatz zu Animation::running ist diese Eigenschaft nur lesbar und kann nicht zur Steuerung des Übergangs verwendet werden.


© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.