Prendete questo codice:QML portata componente di puzzle
import QtQuick 1.1
Rectangle {
width: 100
height: 100
property color fromColor: "red"
property color toColor: "blue"
gradient: Gradient {
property color fromColor: "yellow"
property color toColor: "green"
GradientStop { position: 0; color: fromColor }
GradientStop { position: 1; color: toColor }
}
}
Perché esattamente il Gradient
raccogliere le sue fromColor
e toColor
proprietà dall'elemento di recinzione?
Dove è documentato (almeno all'interno dei commenti del codice sorgente, meglio all'interno dei documenti ufficiali)?
Nota: questo "esempio offuscamento QML è dal discorso di Girish Ramakrishnan Qt Quick Best Practices and Design Patterns (riavvolgimento al 25 '), dove si fa dire che la cosa è estremamente complicata e deve con ambito dei componenti e del genere, ma non ha tempo di spiegare perché.
[UPDATE]
Così, come Martinj racconta di seguito, il componente di livello superiore nell'elemento-proprietà (non solo elemento-bambino) gerarchia ha le sue proprietà visibili a tutte le proprietà tuttavia profondamente annidato, con la precedenza delle proprietà di quelle proprietà e di tutte le pr operazioni di elementi "intermedi" non visti affatto.
Ecco un piccolo esempio:
import QtQuick 1.1
Item {
Item {
property string s: "parent-str"
Item { Component.onCompleted: console.log(s) }
}
}
Questo dà: "ReferenceError: Can't find variable: s"
E questo funziona come previsto:
import QtQuick 1.1
Item {
property string s: "parent-str"
Item { Component.onCompleted: console.log(s) }
}
, l'output "parent-str"
.
Vedere i commenti di MartinJ qui sotto.
"se siete interessati a sapere perché è il modo in cui è ... proprio non esitate a prendere me dopo il colloquio. " (Girish Ramakrishnan in quella conversazione). Bene, ratti. – cgmb
@ Slavik81 Bene, il semplice riferimento all'argomento è stato molto utile, almeno. Inoltre, possiamo sempre mandargli una e-mail - se non ha dimenticato i dettagli rilevanti :) – mlvljr
@ Slavik81 E 'stato chiarito, ha risposto Martin, e ho aggiornato la mia domanda con un esempio (spero) di chiarimento. – mlvljr