按钮长按事件分析
事件 分析 按钮
2023-09-14 09:07:11 时间
引言
最近在做qt项目,需要对button按钮添加一个长按事件(比如点击按钮,开始运动。松开按钮,运动停止)。查了些许资料,(差点误把QPushButton的press信号和长按事件混淆)在此记录一下经验。
setAutoRepeat
以前一直以为QPushButton不支持长按,才发现还有这个功能。用起来很简单:
QPushButton *pBtnSub = new QPushButton(this);
pBtnSub->setAutoRepeat(true); //启用长按
pBtnSub->setAutoRepeatDelay(400);//触发长按的时间
pBtnSub->setAutoRepeatInterval(50);//长按时click信号间隔
connect(pBtnSub,&QPushButton::clicked,[&]{
qDebug()<<"send";
其实在这之前我瞄了眼MouseEvent,它是没有repeat这个东西的,所以一个按钮被鼠标点击还能连续触发,那基本就是一个定时器做出来的。
所以应该说是鼠标按下Delay时间后会启动一个多次触发的TimerEvent(定时器),由timeOut再次触发click槽。
QPushButton 点击信号分析
再来分析一下QPushButton的点击信号。QPushButton有三个很重要的信号跟点击有关:
- pressed
- clicked
- toggled
表面上看,pressed和clicked都会在点击按钮时触发,它们有什么区别呢?toggled好像有时候触发,有时候不触发,到底怎么回事呢?下面就一起聊一下这三个信号
😊验证过程就不放了,直接给结论吧!
首先,这三个信号都是从QAbstractButton继承来的,也就是说,下面情况对QAbstractButton的所有子类都适用
结论:
- pressed最先执行,相当于按下操作
- 按下之后,按钮状态发生变化,触发toggled
- clicked最后执行,相当于弹起操作
相关文章
- 基于预训练模型的金融事件分析及应用
- android 触摸屏事件_android studio按钮点击事件
- js事件循环与macroµ任务队列-前端面试进阶
- 真实攻击案例分析系列之Fantasm Finance攻击事件分析
- react源码分析事件系统
- blockwell.ai 虚假转账 事件分析
- Python小案例(七)事件流分析之桑基、漏斗图
- 双击事件与单击事件的那些事
- 分享QHotKey全局监听按键事件
- Laravel 事件
- 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 六 )
- 【BLE MIDI】MIDI 时间标志分析 ( 音符速度设置事件 | 拍号设置事件 | 基本时间 - 每个四分音符有多少 tick 或 pulse | 节拍时值计算 | 小节时值计算 )
- Oracle 等待事件 BFILE get name object 官方解释,作用,如何使用及优化方法
- jQuery常用鼠标事件汇总
- Linux中的键盘事件分析(linux键盘事件)
- Linux 内核事件回顾-2014年1月及2月
- 遭遇ASP类的事件设计
- 兼容firefox的给每一个onClick再附加一个事件
- document.onreadystatechange事件的用法分析
- JS无法捕获滚动条上的mouseup事件的原因猜想
- a标签的href和onclick的事件的区别介绍
- 不能在子类或外部类发布C#事件代码分析
- 关闭页面时window.location事件未执行的原因分析及解决方案