Зачем нужно Drag.active: dragArea.drag.active и что это вообще?

Есть код

Component {
    id: example_1
    Rectangle {
        width: 250
        height: 250

        Rectangle {
            id: dragItem
            x: 10; y: 10
            width: 50; height: 50
            color: "red"
            Drag.active: dragArea.drag.active

            property point beginDrag    // для фиксации начальной позиции
            property bool caught: false // элемент в DropArea
            z: dragArea.drag.active || dragArea.pressed ? 2 : 1

            MouseArea {
                id: dragArea
                anchors.fill: parent
                drag.target: parent

                // по нажатию устанавливаем начальную позицию прямоугольника
                onPressed: dragItem.beginDrag = Qt.point(dragItem.x, dragItem.y)

                onReleased: {
                    // возвращаемся на начальную позицию
                    if(!dragItem.caught){
                        dragItem.x = dragItem.beginDrag.x
                        dragItem.y = dragItem.beginDrag.y
                    }
                }
            }
        }

        Rectangle {
            // обработчик вхождения элемента в DropArea
            function onEntered(drag){ drag.source.caught = true }

            anchors.right: parent.right
            width: parent.width/2 ; height:parent.height
            color: "silver"

            DropArea {
                id: dropArea
                anchors.fill: parent
                // обработчик ухода элемента из DropArea
                onExited: drag.source.caught = false
            }

            Component.onCompleted: {
                // связь сигнала entered с onEntered
                dropArea.entered.connect(onEntered)
            }
        }
    }
}

Loader { sourceComponent: example_1 }

И в нем вроде бы все понятно за исключением строчки Drag.active: dragArea.drag.active. Без нее все работает как то не так. Путем дебага я пришел к тому что без этой сточки не вызываются события onEntered и onExited хотя привязка происходит. Вопрос в том как это работает. Почему где то мы пишем drag, а где то Drag? Что за active такой? И зачем нам передавать его из dragArea? И откуда он берется в dragArea?

Я нашел какие то объяснения в инете, но они написаны таким кхм нехорошим языком что ничего не понятно.


Ответы (0 шт):