qml
Liaison de propriété
Recherche…
Remarques
La propriété d'un objet peut se voir attribuer une valeur statique qui reste constante jusqu'à ce qu'une nouvelle valeur lui soit explicitement attribuée. Cependant, pour tirer le meilleur parti de QML et de sa prise en charge intégrée des comportements d'objets dynamiques, la plupart des objets QML utilisent des liaisons de propriétés.
Les liaisons de propriétés sont une fonctionnalité essentielle de QML qui permet aux développeurs de spécifier des relations entre différentes propriétés d'objet. Lorsque les dépendances d'une propriété changent de valeur, la propriété est automatiquement mise à jour en fonction de la relation spécifiée.
Notions de base sur les liaisons de propriétés
Considérons cet exemple simple:
import QtQuick 2.7
import QtQuick.Controls 2.0
ApplicationWindow {
visible: true
width: 400
height: 640
Rectangle{
id: rect
anchors.centerIn: parent
height: 100
width: parent.width
color: "blue"
}
}
Dans l'exemple ci-dessus, la largeur de Rectangle est liée à celle de son parent. Si vous modifiez la largeur de la fenêtre de l'application en cours d'exécution, la largeur du rectangle change également.
Un exemple plus compliqué
Dans l'exemple simple, nous définissons simplement la largeur du rectangle à celle de son parent. Considérons un exemple plus compliqué:
ApplicationWindow {
visible: true
width: 400
height: 640
Rectangle{
id: rect
anchors.centerIn: parent
height: 100
width: parent.width/2 + parent.width/3
color: "blue"
}
}
Dans l'exemple, nous effectuons une opération arithmétique sur la valeur liée. Si vous redimensionnez la fenêtre de l'application en cours au maximum, l'espace entre le rectangle et la fenêtre de l'application sera plus large et inversement.
Créer des liaisons avec des fichiers QML créés dynamiquement
Lorsque vous utilisez des instances de fichiers QML en les déclarant directement, chaque property crée une liaison. Ceci est expliqué dans les exemples ci-dessus.
Voici comment créer dynamiquement des composants:
var component = Qt.createComponent("Popup.qml");
var popup = component.createObject(parent, {"width": mainWindow.width, "height": mainWindow.height});
Lorsque la taille de la mainWindow change, la taille du PopUp créé n'est pas affectée. Pour créer une liaison, vous devez définir la taille de la popup comme popup :
var component = Qt.createComponent("Popup.qml");
var options = {
"width": Qt.binding(function() { return mainWindow.width }),
"height": Qt.binding(function() { return mainWindow.height }),
};
var popup = component.createObject(parent, options);
Maintenant, la taille du PopUp dépendra de mainWindow .