Sur cette page

PropertyChanges QML Type

Décrit les nouvelles liaisons ou valeurs de propriétés pour un état. Plus d'informations...

Import Statement: import QtQuick

Propriétés

Description détaillée

PropertyChanges est utilisé pour définir les valeurs des propriétés ou les liaisons dans un site State. Cela permet de modifier les valeurs des propriétés d'un élément lorsqu'il passe d'un état à un autre.

Pour créer un objet PropertyChanges, liez les propriétés de l'élément cible comme vous le feriez avec des propriétés locales. Vous pouvez ainsi définir les nouvelles valeurs des propriétés ou les nouvelles liaisons. Par exemple, lorsque la souris est enfoncée, l'objet

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

Lorsque l'on appuie sur la souris, le site Rectangle passe à l'état redimensionné. Dans cet état, l'objet PropertyChanges définit la couleur du rectangle en bleu et la valeur de height en container.height.

Notez que cela lie automatiquement rect.height à container.height dans l'état redimensionné. Si une liaison de propriété ne doit pas être établie et que la hauteur doit simplement être fixée à la valeur de container.height au moment du changement d'état, définissez la propriété explicit à true.

Un objet PropertyChanges peut également remplacer le gestionnaire de signal par défaut d'un objet pour mettre en œuvre un gestionnaire de signal spécifique au nouvel état :

PropertyChanges {
    myMouseArea.onClicked: doSomethingDifferent()
}

Remarque : les PropertyChanges peuvent être utilisés pour modifier les marges des ancres, mais pas les autres valeurs d'ancres ; utilisez plutôt AnchorChanges pour cela. De même, pour modifier la valeur parent d'un objet Item, il convient d'utiliser ParentChange.

Réinitialisation des valeurs des propriétés

La valeur undefined peut être utilisée pour réinitialiser la valeur de la propriété d'un état. Dans l'exemple suivant, lorsque myText passe à l'état widerText, sa propriété width est réinitialisée, ce qui donne au texte sa largeur naturelle et permet d'afficher toute la chaîne sur une seule ligne.

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

Modifications immédiates des propriétés dans les transitions

Lorsque les transitions sont utilisées pour animer les changements d'état, elles font passer les propriétés de leurs valeurs dans l'état actuel à celles définies dans le nouvel état (telles que définies par les objets PropertyChanges). Cependant, il est parfois souhaitable de définir la valeur d'une propriété immédiatement au cours d'un Transition, sans animation ; dans ce cas, le type PropertyAction peut être utilisé pour forcer un changement de propriété immédiat.

Voir la documentation PropertyAction pour plus de détails.

Remarque : les propriétés visible et enabled de Item ne se comportent pas exactement de la même manière que les autres propriétés dans PropertyChanges. Comme ces propriétés peuvent être modifiées implicitement par l'état de leur parent, elles doivent être définies explicitement dans tous les PropertyChanges. Un élément ne sera toujours pas activé/visible si l'un de ses parents n'est pas activé ou visible.

Note : Pour une compatibilité ascendante avec Qt 5, vous pouvez également spécifier des PropertyChanges en utilisant la propriété target et des noms de propriétés simples sans ID. Par exemple : PropertyChanges { target: myItem; x: 15 }. Il est recommandé d'utiliser le formulaire avec ID au lieu de target. Vous pouvez également utiliser le formulaire avec target si le fichier doit être édité avec la commande Qt Design Studio. Notez que Qt Design Studio impose également un certain nombre de restrictions supplémentaires sur les fichiers avec lesquels il peut travailler.

Voir aussi l 'exemple des États, Qt Quick États, et Qt Qml.

Documentation sur les propriétés

explicit : bool

Si la valeur explicite est fixée à true, les liaisons seront interprétées comme des affectations. L'expression ne sera évaluée qu'une seule fois et aucune mise à jour n'aura lieu, même si les dépendances changent.

Dans l'exemple suivant, l'ajout d'explicite empêche myItem.width d'être lié à parent.width et lui attribue la valeur de parent.width au moment du changement d'état.

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

Par défaut, explicit est faux.

restoreEntryValues : bool

Cette propriété indique si les valeurs précédentes doivent être rétablies lorsque l'on quitte l'état.

La valeur par défaut est true. En fixant cette valeur à false, on crée un état temporaire qui a des effets permanents sur les valeurs des propriétés.

target : QtObject

Cette propriété contient l'objet qui contient les propriétés à modifier.

Note : Vous n'avez généralement pas besoin d'utiliser cette propriété. Elle n'existe que pour la compatibilité avec Qt 5 et pour la compatibilité avec 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.