qml
Eigenschaftsbindung
Suche…
Bemerkungen
Der Eigenschaft eines Objekts kann ein statischer Wert zugewiesen werden, der konstant bleibt, bis ihm explizit ein neuer Wert zugewiesen wird. Um QML und seine integrierte Unterstützung für dynamisches Objektverhalten bestmöglich zu nutzen, verwenden die meisten QML-Objekte Eigenschaftsbindungen.
Eigenschaftsbindungen sind eine Kernfunktion von QML, mit der Entwickler Beziehungen zwischen verschiedenen Objekteigenschaften angeben können. Wenn sich die Abhängigkeiten einer Eigenschaft ändern, wird die Eigenschaft entsprechend der angegebenen Beziehung automatisch aktualisiert.
Grundlagen zu Eigenschaftsbindungen
Betrachten Sie dieses einfache Beispiel:
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"
}
}
Im obigen Beispiel ist die Breite des Rectangle an die des übergeordneten Rectangle gebunden. Wenn Sie die Breite des laufenden Anwendungsfensters ändern, ändert sich auch die Breite des Rechtecks.
Ein komplizierteres Beispiel
In dem einfachen Beispiel setzen wir einfach die Breite des Rechtecks auf die des übergeordneten Elements. Betrachten wir ein komplizierteres Beispiel:
ApplicationWindow {
visible: true
width: 400
height: 640
Rectangle{
id: rect
anchors.centerIn: parent
height: 100
width: parent.width/2 + parent.width/3
color: "blue"
}
}
Im Beispiel führen wir eine Rechenoperation für den Wert aus, der gebunden wird. Wenn Sie die Größe des laufenden Anwendungsfensters auf die maximale Breite ändern, wird der Abstand zwischen Rechteck und Anwendungsfenster größer und umgekehrt.
Erstellen Sie Bindungen mit dynamisch erstellten QML-Dateien
Wenn Sie Instanzen von QML-Dateien verwenden, indem Sie sie direkt deklarieren, erstellt jede property eine Bindung. Dies wird in den obigen Beispielen erläutert.
So erstellen Sie dynamisch Komponenten:
var component = Qt.createComponent("Popup.qml");
var popup = component.createObject(parent, {"width": mainWindow.width, "height": mainWindow.height});
Wenn sich die Größe des mainWindow ändert, wird die Größe des erstellten PopUp nicht beeinflusst. Um eine Bindung zu erstellen, legen Sie die Größe des 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);
Die Größe des PopUp hängt nun von mainWindow .