Qt快速QML MouseArea自动重复按下

时间:2017-09-26 20:54:55

标签: qt qml qtquick2

希望我不会错过这里明显的东西。

我正在编写一个应用,并使用ImageMouseArea进行了放大按钮。我需要按钮重复一个方法调用,比如说,每按一次按住鼠标按钮放大。如何重复这一点并不是完全明显的。现在我有:

Rectangle {
    id:zoomInBtn
    Image {
        id: zoomInImg
        anchors.centerIn: parent
        fillMode: Image.PreserveAspectFit
        source: zoomIn.pressed ? ":/img/zoom_in_sel" : ":/img/zoom_in_unsel"
    }
    MouseArea {
        id: zoomIn
        anchors.fill: parent
        onPressed: { cameraController.zoomIn(0.5); }
    }

我也试过

onPressAndHold: { cameraController.zoomIn(0.5); }

基本相同,虽然延迟时间很短,但我需要在按住鼠标按钮时每秒重复此操作。

1 个答案:

答案 0 :(得分:3)

要执行您需要的任务,您必须使用TimercontainsMouse处于活动状态时,计时器必须保持活动状态。如果计时器被激活,您还必须立即启用triggeredOnStart

Rectangle {
    id:zoomInBtn
    Image {
        id: zoomInImg
        anchors.centerIn: parent
        fillMode: Image.PreserveAspectFit
        source: zoomIn.pressed ? ":/img/zoom_in_sel" : ":/img/zoom_in_unsel"
    }
    MouseArea {
        id: zoomIn
        anchors.fill: parent
    }

    Timer {
        id: timer
        interval: 1000
        repeat: true
        triggeredOnStart: true
        running: zoomIn.containsMouse
        onTriggered: cameraController.zoomIn(0.5) //task
        }
    }
}