让我们假设我有一个Button
,MouseArea
或类似的qml。而且我希望手动使用script
来完成这些任务,而不是手动单击用户。
在qml
中可以这样做吗?
例如,假设我有一个MouseArea
,如下所示:
MouseArea {
id:panelAreaClick
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onClicked: function(){
isSelected = !isSelected
}
}
但是有时候我也希望脚本也触发鼠标区域的点击:
function click(){
panelAreaClick.click()
}
这显然行不通,但是有办法吗?
答案 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
}