Auf dieser Seite

PropertyChanges QML Type

Beschreibt neue Eigenschaftszuordnungen oder Werte für einen Zustand. Mehr...

Import Statement: import QtQuick

Eigenschaften

Ausführliche Beschreibung

„PropertyChanges“ wird verwendet, um die Eigenschaftswerte oder Bindungen in einem „ State “ zu definieren. Dadurch können die Eigenschaftswerte eines Elements geändert werden, wenn es zwischen verschiedenen Zuständen wechselt.

Um ein „PropertyChanges“-Objekt zu erstellen, binden Sie es an die Eigenschaften des Zielelements, so wie Sie es auch bei lokalen Eigenschaften tun würden. Auf diese Weise können Sie die neuen Eigenschaftswerte oder Bindungen definieren. Beispiel:

import QtQuick

Item {
    id: container
    width: 300; height: 300

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

        MouseArea {
           id: mouseArea
           anchors.fill: parent
        }

        states: State {
           name: "resized"; when: mouseArea.pressed
           PropertyChanges {
               rect {
                   color: "blue"
                   height: container.height
               }
           }
        }
    }
}

Wenn die Maustaste gedrückt wird, wechselt das „ Rectangle “ in den Zustand „resized “. In diesem Zustand setzt das „PropertyChanges“-Objekt die Farbe des Rechtecks auf Blau und den Wert von „ height “ auf den von „ container.height “.

Beachten Sie, dass dadurch „ rect.height “ im Zustand „resized“ automatisch an „ container.height “ gebunden wird. Sollte keine Eigenschaftsbindung hergestellt werden sollen und die Höhe zum Zeitpunkt des Zustandswechsels lediglich auf den Wert von „ container.height “ gesetzt werden, setzen Sie die Eigenschaft „ explicit “ auf „ true “.

Ein `PropertyChanges`-Objekt kann auch den Standard-Signal-Handler eines Objekts überschreiben, um einen für den neuen Zustand spezifischen Signal-Handler zu implementieren:

PropertyChanges {
    myMouseArea.onClicked: doSomethingDifferent()
}

Hinweis: Mit „PropertyChanges“ können Ankerränder geändert werden, nicht jedoch andere Ankerwerte; verwenden Sie hierfür stattdessen „ AnchorChanges “. Um den Wert von „ parent “ eines „ Item “ zu ändern, verwenden Sie ebenfalls „ ParentChange “.

Zurücksetzen von Eigenschaftswerten

Der Wert „ undefined “ kann verwendet werden, um den Eigenschaftswert für einen Zustand zurückzusetzen. Im folgenden Beispiel wird, wenn „ myText “ in den Zustand „widerText“ wechselt, die Eigenschaft „ width “ zurückgesetzt, wodurch der Text seine natürliche Breite erhält und die gesamte Zeichenfolge in einer einzigen Zeile angezeigt wird.

Rectangle {
    width: 300; height: 200

    Text {
        id: myText
        width: 50
        wrapMode: Text.WordWrap
        text: "a text string that is longer than 50 pixels"

        states: State {
            name: "widerText"
            PropertyChanges { myText.width: undefined }
        }
    }

    MouseArea {
        anchors.fill: parent
        onClicked: myText.state = "widerText"
    }
}

Sofortige Eigenschaftsänderungen bei Übergängen

Wenn Übergänge (Transitions) zur Animation von Zustandsänderungen verwendet werden, animieren sie Eigenschaften von ihren Werten im aktuellen Zustand zu den im neuen Zustand definierten Werten (wie durch „PropertyChanges“-Objekte festgelegt). Manchmal ist es jedoch wünschenswert, einen Eigenschaftswert während eines Übergangs ( Transition) sofort und ohne Animation festzulegen; in diesen Fällen kann der Typ „ PropertyAction “ verwendet werden, um eine sofortige Eigenschaftsänderung zu erzwingen.

Weitere Details finden Sie in der Dokumentation zu „ PropertyAction “.

Hinweis: Die Eigenschaften „ visible “ und „ enabled “ von „ Item “ verhalten sich nicht genau wie andere Eigenschaften in „PropertyChanges“. Da diese Eigenschaften implizit über den Zustand ihres übergeordneten Elements geändert werden können, sollten sie in allen „PropertyChanges“ explizit festgelegt werden. Ein Element ist weiterhin nicht aktiviert/sichtbar, wenn eines seiner übergeordneten Elemente nicht aktiviert oder sichtbar ist.

Hinweis: Aus Gründen der Abwärtskompatibilität mit Qt 5 können Sie „PropertyChanges“ auch mithilfe der Eigenschaft „ target “ und einfacher Eigenschaftsnamen ohne IDs angeben. Beispiel: „ PropertyChanges { target: myItem; x: 15 } “. Die Form mit der ID anstelle von „ target “ wird empfohlen. Möglicherweise müssen Sie auch die Form mit „ target “ verwenden, wenn die Datei bearbeitet werden soll mit Qt Design Studio. Beachten Sie, dass Qt Design Studio dies zudem eine Reihe weiterer Einschränkungen hinsichtlich der Dateien mit sich bringt, mit denen es arbeiten kann.

Siehe auch das Beispiel „States“, Qt Quick States, sowie Qt Qml.

Dokumentation zu Eigenschaften

explicit : bool

Wenn „explicit“ auf „true“ gesetzt ist, werden Bindungen als Zuweisungen interpretiert. Der Ausdruck wird nur einmal ausgewertet, und es finden keine Aktualisierungen statt, selbst wenn sich die Abhängigkeiten ändern.

Im folgenden Beispiel verhindert das Hinzufügen von „explicit“, dass „ myItem.width “ an „ parent.width “ gebunden wird. Stattdessen wird ihm zum Zeitpunkt der Zustandsänderung der Wert von „ parent.width “ zugewiesen.

PropertyChanges {
    target: myItem
    explicit: true
    width: parent.width
}

Standardmäßig ist „explicit“ auf „false“ gesetzt.

restoreEntryValues : bool

Diese Eigenschaft legt fest, ob beim Verlassen des Zustands die vorherigen Werte wiederhergestellt werden sollen.

Der Standardwert ist „ true “. Wenn dieser Wert auf „ false “ gesetzt wird, wird ein temporärer Zustand erstellt, der dauerhafte Auswirkungen auf die Eigenschaftswerte hat.

target : QtObject

Diese Eigenschaft enthält das Objekt, das die zu ändernden Eigenschaften enthält.

Hinweis: In der Regel müssen Sie diese Eigenschaft nicht verwenden. Sie dient lediglich der Kompatibilität mit Qt 5 und mit Qt Design Studio.

© 2026 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.