QtQuick 2向元素传递函数

QtQuick 2向元素传递函数,qt,qml,qt-quick,qtquick2,Qt,Qml,Qt Quick,Qtquick2,我有一个QML元素“按钮”,里面有一个MouseArea元素。 我想做的是向该项发送函数,然后将其传递给MouseArea: 例如: Button{ id: smth ... ... onClicked: console.log("Someone Clicked Me!") } 我的元素可以是这样的: Rectangle{ property var onClicked ... MouseArea{ onClicked :

我有一个QML元素“按钮”,里面有一个MouseArea元素。 我想做的是向该项发送函数,然后将其传递给MouseArea

例如:

Button{
    id: smth
    ... 
    ...
   onClicked: console.log("Someone Clicked Me!")

}
我的元素可以是这样的:

Rectangle{
    property var onClicked
    ...
    MouseArea{
       onClicked : parent.onClicked
    }
}

我发现我可以像在native js中一样传递函数而不使用括号,但我认为有一种方法可以像MouseArea元素那样实现它。

在QML中处理这种情况的通常方法是让按钮发出一个信号,然后由按钮的用户处理

Button.qml:

Rectangle {
    id: root
    signal clicked

    MouseArea {
        anchors.fill: parent
        onClicked: root.clicked();
    }
}
用法:

Button {
    onClicked: console.log("Button was clicked!");
}