[Interest] Understanding attached signals

Sze Howe Koh szehowe.koh at gmail.com
Wed Mar 19 12:19:52 CET 2014


Hi all,

I was playing around with attached signals to learn how they tick.
Here are two test programs, each with 3 different ways of connecting
to a signal:

//==========
import QtQuick 2.2

Rectangle {
    width: 360
    height: 360

    Text {
        text: "Click Me"
        anchors.centerIn: parent

        MouseArea {
            id: mouseArea
            anchors.fill: parent
            onClicked: console.log("Clicked (Direct signal handler)")
        }
    }

    Connections {
        target: mouseArea
        onClicked: console.log("Clicked (Connections)")
    }

    function jsFunction() {
        console.log("Clicked (JS Function)")
    }
    Component.onCompleted: mouseArea.clicked.connect(jsFunction)
}
//==========
//==========
import QtQuick 2.2

Rectangle {
    width: 360
    height: 360

    Rectangle {
        id: box
        width: 50
        height: 50
        color: "green"

        Drag.active: mouseArea.drag.active
        Drag.dragType: Drag.Automatic
        Drag.onDragStarted: console.log("Started (Attached Signal Handler)")

        MouseArea {
            id: mouseArea
            anchors.fill: parent
            drag.target: parent
        }
    }

    Connections {
        target: box
        Drag.onDragStarted: console.log("Started (Connections)")
    }

    function jsFunction() {
        console.log("Started (JS Function)")
    }
    Component.onCompleted: box.Drag.dragStarted.connect(jsFunction)
}
//==========

When run them and click/drag the relevant items, the output I get is:

    Clicked (Direct signal handler)
    Clicked (Connections)
    Clicked (JS Function)

    Started (Attached Signal Handler)
    Started (JS Function)

It looks like the Connections item doesn't activate in the dragging
test. Could someone explain why that's the case?


Thanks!
Sze-Howe



More information about the Interest mailing list