PropertyChanges QML Type
Décrit les nouvelles liaisons de propriétés ou les nouvelles valeurs d'un état. En savoir plus...
| Import Statement: | import QtQuick |
Propriétés
- explicit : bool
- restoreEntryValues : bool
- target : QtObject
Description détaillée
PropertyChanges sert à définir les valeurs de propriété ou les liaisons dans un objet State. Cela permet de modifier les valeurs de propriété d’un élément lorsqu’il passe d’un état à un autre.
Pour créer un objet PropertyChanges, liez-le aux propriétés de l’élément cible comme vous le feriez pour des propriétés locales. Vous pouvez ainsi définir les nouvelles valeurs de propriété ou les nouveaux liaisons. Par exemple :
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 clique avec la souris, l’ Rectangle passe à l’état « redimensionné ». Dans cet état, l’objet PropertyChanges définit la couleur du rectangle sur bleu et la valeur de « height » sur celle de « container.height ».
Notez que cela lie automatiquement « rect.height » à « container.height » dans l’état « resized ». Si un lien de propriété ne doit pas être établi et que la hauteur doit simplement être définie sur la valeur de « container.height » au moment du changement d’état, définissez la propriété « explicit » sur « true ».
Un objet `PropertyChanges` peut également redéfinir le gestionnaire de signal par défaut d’un objet afin d’implémenter un gestionnaire de signal spécifique au nouvel état :
PropertyChanges {
myMouseArea.onClicked: doSomethingDifferent()
}Remarque : PropertyChanges peut être utilisé pour modifier les marges d’ancrage, mais pas les autres valeurs d’ancrage ; utilisez plutôt AnchorChanges à cette fin. De même, pour modifier la valeur de parent d’un Item, utilisez plutôt ParentChange.
Réinitialisation des valeurs de propriété
La valeur undefined permet de réinitialiser la valeur d’une propriété pour un état. Dans l’exemple suivant, lorsque myText passe à l’état widerText, sa propriété width est réinitialisée, ce qui redonne au texte sa largeur naturelle et affiche la chaîne entière 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 lors des transitions
Lorsque les transitions sont utilisées pour animer les changements d’état, elles animent les propriétés en faisant passer leurs valeurs de 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’une transition ` Transition`, sans animation ; dans ces cas-là, le type ` PropertyAction ` peut être utilisé pour forcer un changement immédiat de propriété.
Consultez la documentation relative à ` 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`. Étant donné que ces propriétés peuvent être modifiées implicitement via 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.
Remarque : pour des raisons de compatibilité ascendante avec Qt 5, vous pouvez également spécifier les PropertyChanges à l’aide de la propriété « target » et de noms de propriétés simples sans identifiant. Par exemple : « PropertyChanges { target: myItem; x: 15 } ». La forme avec « ID » à la place de « target » est recommandée. Vous devrez peut-être également utiliser la forme avec « target » si le fichier doit être modifié avec Qt Design Studio. Notez que Qt Design Studio cela impose également un certain nombre de restrictions supplémentaires sur les fichiers avec lesquels il peut fonctionner.
Voir également l’exemple «States », Qt Quick States, et Qt Qml.
Documentation sur les propriétés
explicit : bool
Si « explicit » est défini sur « 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 de « explicit » empêche « myItem.width » d'être lié à « parent.width ». À la place, la valeur « parent.width » lui est attribuée au moment du changement d'état.
PropertyChanges {
target: myItem
explicit: true
width: parent.width
}Par défaut, explicit est défini sur false.
restoreEntryValues : bool
Cette propriété détermine si les valeurs précédentes doivent être restaurées lors de la sortie de l'état.
La valeur par défaut est « true ». En définissant cette valeur sur « false », vous créez un état temporaire qui a des effets permanents sur les valeurs des propriétés.
target : QtObject
Cette propriété contient l'objet qui renferme les propriétés à modifier.
Remarque : vous n’avez généralement pas besoin d’utiliser cette propriété. Elle n’existe que pour des raisons de compatibilité avec Qt 5 et 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.