qml
Associazione di proprietà
Ricerca…
Osservazioni
Alla proprietà di un oggetto può essere assegnato un valore statico che rimane costante fino a quando non viene assegnato esplicitamente un nuovo valore. Tuttavia, per utilizzare al meglio QML e il relativo supporto integrato per i comportamenti dinamici degli oggetti, la maggior parte degli oggetti QML utilizza i collegamenti di proprietà.
I legami di proprietà sono una caratteristica fondamentale di QML che consente agli sviluppatori di specificare le relazioni tra le diverse proprietà dell'oggetto. Quando le dipendenze di una proprietà cambiano di valore, la proprietà viene automaticamente aggiornata in base alla relazione specificata.
Nozioni di base sulle associazioni di proprietà
Considera questo semplice esempio:
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"
}
}
Nell'esempio sopra, la larghezza di Rectangle è legata a quella del suo genitore. Se si modifica la larghezza della finestra dell'applicazione in esecuzione, cambia anche la larghezza del rettangolo.
Un esempio più complicato
Nel semplice esempio, impostiamo semplicemente la larghezza del rettangolo a quella del suo genitore. Consideriamo un esempio più complicato:
ApplicationWindow {
visible: true
width: 400
height: 640
Rectangle{
id: rect
anchors.centerIn: parent
height: 100
width: parent.width/2 + parent.width/3
color: "blue"
}
}
Nell'esempio, eseguiamo operazioni aritmetiche sul valore che viene associato. Se ridimensionate la finestra dell'applicazione in esecuzione alla larghezza massima, lo spazio tra il rettangolo e la finestra dell'applicazione sarà più ampio e viceversa.
Crea associazioni con file QML creati dinamicamente
Quando si utilizzano istanze di file QML dichiarandoli direttamente, ogni property crea un'associazione. Questo è spiegato negli esempi sopra.
Ecco come si creano dinamicamente i componenti:
var component = Qt.createComponent("Popup.qml");
var popup = component.createObject(parent, {"width": mainWindow.width, "height": mainWindow.height});
Quando la dimensione della mainWindow cambia, la dimensione del PopUp creato non è influenzata. Per creare un legame, imposta la dimensione del popup questo modo:
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);
Ora la dimensione del PopUp dipenderà da mainWindow .