鼠标区域按下时代码执行 qml
Code execution while mousearea pressed qml
我检查了 documentation 中不同的 mouseArea 事件,在按下 mouseArea 时没有机会执行 js 函数。
因为我找不到直接的方法,所以我采用了这个解决方法。
我设置了一个 Timer 来更新我的面板,以防我的鼠标区域的添加 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()
}
}
我检查了 documentation 中不同的 mouseArea 事件,在按下 mouseArea 时没有机会执行 js 函数。
因为我找不到直接的方法,所以我采用了这个解决方法。
我设置了一个 Timer 来更新我的面板,以防我的鼠标区域的添加 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()
}
}