QtQuick 2将功能传递给元素

时间:2014-03-21 16:38:01

标签: qt qml qt-quick qtquick2

我有一个 QML元素" Button" ,里面有 MouseArea元素。 我想要做的是向项目发送一个函数,然后将其传递给MouseArea

示例:

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

}

我的元素可能是这样的:

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

我发现我可以像没有括号的原生js一样传递函数,但我认为有一种方法像MouseArea元素那样实现它。

1 个答案:

答案 0 :(得分:2)

在QML中处理这种情况的常用方法是让Button 发出信号,然后由Button的用户处理。

Button.qml:

Rectangle {
    id: root
    signal clicked

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

用法:

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