Componente QML rompecabezas de alcance

Toma este código:

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 }
    }
}

¿Por qué exactamente hace elGradient elige sufromColor ytoColor ¿Propiedades del elemento envolvente?

¿Dónde se documenta esto (al menos en los comentarios del código fuente, mejor dentro de los documentos oficiales)?

Nota: este "ejemplo de ofuscación QML es de la charla de Girish RamakrishnanMejores Prácticas y Patrones de Diseño de Qt Quick (retroceder hasta el minuto 25), donde dice que la cosa es extremadamente complicada y tiene que ver con el alcance del componente y así, pero no tiene tiempo para explicar por qué.

[ACTUALIZAR]

Entonces, como MartinJ indica a continuación, el componente de nivel superior en la jerarquía elemento-propiedad (no solo elemento-hijo) tiene sus propiedades visibles para todas las propiedades, sin embargo, están anidadas, con la prioridad de las propiedades de esas propiedades y todas las propiedades Artículos "intermedios" no vistos en absoluto.

Aquí hay un pequeño ejemplo:

import QtQuick 1.1

Item {
    Item {
        property string s: "parent-str"
        Item { Component.onCompleted: console.log(s) }
    }
}

Esto da:"ReferenceError: Can't find variable: s"

Y esto funciona como se espera:

import QtQuick 1.1

Item {
    property string s: "parent-str"
    Item { Component.onCompleted: console.log(s) }
}

, dando salida"parent-str".

Por favor, vea los comentarios de MartinJ a continuación.

Respuestas a la pregunta(2)

Su respuesta a la pregunta