当“长时间”按下鼠标区域时,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();
}
}
}