鼠标区域按下时代码执行 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()
            }
        }