javascript可以触发qml中的组件点击吗?

时间:2019-01-11 14:04:24

标签: qt qml

让我们假设我有一个ButtonMouseArea或类似的qml。而且我希望手动使用script来完成这些任务,而不是手动单击用户。

qml中可以这样做吗?

例如,假设我有一个MouseArea,如下所示:

    MouseArea {
        id:panelAreaClick
        anchors.fill: parent
        cursorShape: Qt.PointingHandCursor
        onClicked: function(){
            isSelected = !isSelected
        }
    }

但是有时候我也希望脚本也触发鼠标区域的点击:

function click(){
    panelAreaClick.click()
}

这显然行不通,但是有办法吗?

1 个答案:

答案 0 :(得分:2)

实际上,如果您手动触发信号clicked

function click() {
    panelAreaClick.clicked(null) // you need to pass 1 argument since clicked needs a MouseAvent argument
}

但是我认为这是非常糟糕的设计。另外请注意,mouse参数在null信号处理程序中将为onClicked

您可以执行相反的操作:

// in MouseArea:
onClicked: toggleSelection()

具有:

// function callable from anywhere
function toggleSelection() {
    panelAreaClick.isSelected = !panelAreaClick.isSelected
}