如何创建按下时持续发射信号的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
相关产品推荐
相关产品推荐

