Головоломка области видимости компонента QML

Возьми этот код:

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

Почему именноGradient выбрать егоfromColor а такжеtoColor свойства из вмещающего элемента?

Где это задокументировано (по крайней мере, в комментариях к исходному коду, лучше в официальных документах)?

Note: this "QML obfuscation example is from Girish Ramakrishnan's talk Qt Quick Best Practices и Шаблоны проектирования (перемотка к 25-й минуте), где он говорит, что вещь чрезвычайно сложная и имеет отношение к области действия компонентов и тому подобное, но не имеет времени объяснить, почему.

[UPDATE]

Таким образом, как говорит MartinJ ниже, компонент верхнего уровня в иерархии element-property (не только element-child) имеет свои свойства, видимые для всех свойств, сколь бы глубокими они ни были, с приоритетом этих свойств & apos; свойства и все свойства "промежуточного" предметы не видны вообще.

Вот небольшой пример:

import QtQuick 1.1

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

Это дает:"ReferenceError: Can't find variable: s"

И это работает как ожидалось:

import QtQuick 1.1

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

, вывод"parent-str".

Пожалуйста, смотрите комментарии MartinJ ниже.

Ответы на вопрос(2)

Ваш ответ на вопрос