You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建按下时持续发射信号的QML按钮?摇杆场景需求

QML实现按住持续触发信号的按钮方案

直接用QML内置的Timer组件结合Button的pressed/released信号就能解决,完全不用自己写循环或维护标记位,代码简洁且适配现有架构:

Button {
    id: rockerButton
    text: "摇杆按钮"
    // 自定义触发间隔,可根据需求调整
    property int repeatInterval: 150 

    Timer {
        id: repeatTimer
        interval: rockerButton.repeatInterval
        repeat: true
        running: false
        // 每次触发时调用你的递增函数
        onTriggered: yourIncrementFunction()
    }

    // 按住按钮时启动定时器
    onPressed: repeatTimer.start()
    // 松开按钮时停止定时器
    onReleased: repeatTimer.stop()
}

额外调整选项

如果需要按住按钮立刻触发一次,再进入定时重复,可以修改onPressed逻辑:

onPressed: {
    yourIncrementFunction() // 先执行一次
    repeatTimer.start()
}

要是需要先延迟一小段时间再开始重复触发,给Timer加个delay属性就行:

Timer {
    id: repeatTimer
    interval: rockerButton.repeatInterval
    delay: 300 // 按住300ms后才开始重复触发
    repeat: true
    running: false
    onTriggered: yourIncrementFunction()
}

这个方案完全复用QML原生组件的逻辑,不用重写按钮,也不会给项目架构增加额外负担,四个摇杆按钮都可以直接套用这个模板。

内容的提问来源于stack exchange,提问作者MIku

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 06:33:11