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 .



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow