PropertyChanges QML Type

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

Import Statement: import QtQuick

Eigenschaften

Detaillierte 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 Zuständen wechselt.

Um ein PropertyChanges-Objekt zu erstellen, binden Sie es an die Eigenschaften des Zielelements, so wie Sie es mit lokalen Eigenschaften tun würden. Auf diese Weise können Sie die neuen Eigenschaftswerte oder Bindungen definieren. Ein 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 Maus gedrückt wird, wechselt die Rectangle in den Zustand " Größe geändert". 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 automatisch an container.height im Zustand " resized" gebunden wird. Wenn keine Eigenschaftsbindung hergestellt werden soll und die Höhe nur auf den Wert von container.height zum Zeitpunkt der Zustandsänderung gesetzt werden soll, setzen Sie die Eigenschaft explicit auf true.

Ein PropertyChanges-Objekt kann auch den Standardsignalhandler für ein Objekt überschreiben, um einen für den neuen Zustand spezifischen Signalhandler zu implementieren:

PropertyChanges {
    myMouseArea.onClicked: doSomethingDifferent()
}

Hinweis: PropertyChanges kann verwendet werden, um Ankerränder zu ändern, aber nicht andere Ankerwerte; verwenden Sie stattdessen AnchorChanges. Um den Wert von Item's parent zu ändern, verwenden Sie stattdessen ParentChange.

Zurücksetzen von Eigenschaftswerten

Der Wert undefined kann verwendet werden, um den Eigenschaftswert für einen Zustand zurückzusetzen. Wenn im folgenden Beispiel myText in den Zustand widerText wechselt, wird 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"
    }
}

Unmittelbare Eigenschaftsänderungen in Übergängen

Wenn Übergänge verwendet werden, um Zustandsänderungen zu animieren, werden die Eigenschaften von ihren Werten im aktuellen Zustand zu den im neuen Zustand definierten Werten animiert (wie von PropertyChanges-Objekten definiert). Manchmal ist es jedoch wünschenswert, einen Eigenschaftswert sofort während einer Transition zu setzen, ohne Animation; in diesen Fällen kann der Typ PropertyAction verwendet werden, um eine sofortige Eigenschaftsänderung zu erzwingen.

Weitere Einzelheiten finden Sie in der Dokumentation PropertyAction.

Hinweis: Die Eigenschaften visible und enabled von Item verhalten sich nicht genau so wie andere Eigenschaften in PropertyChanges. Da diese Eigenschaften implizit über den Zustand ihrer Eltern geändert werden können, sollten sie in allen PropertyChanges explizit festgelegt werden. Ein Element wird auch dann nicht aktiviert/sichtbar sein, wenn eines seiner Elternteile nicht aktiviert oder sichtbar ist.

Hinweis: Aus Gründen der Abwärtskompatibilität mit Qt 5 können Sie PropertyChanges auch mit der Eigenschaft target und einfachen Eigenschaftsnamen ohne IDs angeben. Zum Beispiel: PropertyChanges { target: myItem; x: 15 }. Es wird empfohlen, das Formular mit ID anstelle von target zu verwenden. Sie müssen eventuell auch das Formular mit target verwenden, wenn die Datei mit Qt Design Studio. Beachten Sie, dass Qt Design Studio auch eine Reihe weiterer Beschränkungen für die Dateien auferlegt, mit denen es arbeiten kann.

Siehe auch Staaten Beispiel, Qt Quick Staaten, und Qt Qml.

Eigenschaft Dokumentation

explicit : bool

Wenn explicit auf true gesetzt ist, werden alle potenziellen Bindungen als einmalige Zuweisungen interpretiert, die bei der Eingabe des Zustands erfolgen.

Im folgenden Beispiel verhindert das Hinzufügen von explicit, dass myItem.width an parent.width gebunden wird. Stattdessen wird ihm zum Zeitpunkt des Zustandswechsels der Wert von parent.width zugewiesen.

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

Standardmäßig ist explicit false.


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 geschaffen, der dauerhafte Auswirkungen auf die Eigenschaftswerte hat.


target : QtObject

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

Hinweis: Im Allgemeinen müssen Sie diese Eigenschaft nicht verwenden. Sie existiert nur für die Kompatibilität mit Qt 5 und für die Kompatibilität mit Qt Design Studio.


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