鼠标区域按下qml时执行的代码



我检查了文档中不同的mouseArea事件,当mouseArea被按下时,没有机会执行js函数。

因为我没有找到一个直接的方法,所以我选择了这个解决方案。我设置了一个计时器来更新我的面板,以防我的鼠标区域的添加bool属性isPressed被设置为true。

鼠标面积:

MouseArea {
id: myMouseArea
//pos and size removed. Not relevant
property bool isPressed: false
onPressed: {
isPressed = true;
}
onReleased: {
isPressed = false;
}
}

计时器:

Timer {
id: updatePanelTimer
interval: 100
repeat: true
running: true
triggeredOnStart: true
onTriggered: updatePanel()
}

功能:

function updatePanel() {
if (myMouseArea.isPressed) {
//run code
} 
}

是否有更直接的方法来执行代码,而mouseArea被按下?我想知道是否有一种方法可以在mouseArea本身内做到这一点,主要是如果它可能不需要计时器。

如果您想只在鼠标处于按下状态时运行代码:

MouseArea {
id: myMouseArea
//pos and size removed. Not relevant
property bool isPressed: false
onPressed: {
updatePanelTimer.start()
}

onReleased: {
updatePanelTimer.stop()
}
}

最新更新