当“长时间”按下鼠标区域时,QML在其MouseArea组件中提供一个PressAndHold信号。
http://doc.qt.io/qt-5/qml-qtquick-mousearea.html#pressAndHold-signal

该持续时间设置为800毫秒,我找不到修改此持续时间的方法。
可以做到吗,如果可以,我该怎么做?

谢谢!

最佳答案

如果您将看到MouseArea源(Src/qtdeclarative/src/quick/items/qquickmousearea.cpp),则会找到以下行:

d->pressAndHoldTimer.start(qApp->styleHints()->mousePressAndHoldInterval(), this);


持续时间值来自QStyleHints,但是它是只读的,因为该值是平台指定的。因此,如果您不打算更改来源,则答案为“否”。

但是您仍然可以模拟此事件,例如:

MouseArea {
    property int pressAndHoldDuration: 2000
    signal myPressAndHold()
    anchors.fill: parent
    onPressed: {
        pressAndHoldTimer.start();
    }
    onReleased: {
        pressAndHoldTimer.stop();
    }
    onMyPressAndHold: {
        console.log("It works!");
    }

    Timer {
        id:  pressAndHoldTimer
        interval: parent.pressAndHoldDuration
        running: false
        repeat: false
        onTriggered: {
            parent.myPressAndHold();
        }
    }
}

07-26 08:20