[Qt学习笔记]QPushButton点击事件和长按事件使用功能

1、背景介绍 在使用QPushButton中,一般都在UI界面直接右键添加槽函数进入代码,很少去分析每个触发事件的功能,比如需要通过长按按钮来触发相应的操作,这里点击信号不可以达到预期的效果。
2、功能分析 首先分析QPushButton的点击信号,QPushButton有三个常用的信号:

  • pressed() —— 当鼠标在button上并点击左键的时候发射,最先执行;
  • released()——当鼠标左键被释放的时候
  • clicked() —— 当鼠标首先按下pressed,然后释放,最后执行;
  • toggled() —— 按下之后状态发生变化,触发toggled;
原本以为Pressed和clicked没有区别,深入研究才发现自己格局小了;首先,这三个信号都是从QAbstractButton继承来的,也就是对AbstractButton的所有子类都适用。
按键长按事件的原理就是鼠标按下Delay时间后会启动一个多次触发的TimerEvent(定时器),由timeOut再次触发click槽。
3、实现代码
QPushButton *pBtnSub = new QPushButton(this); pBtnSub->setAutoRepeat(true); //启用长按 pBtnSub->setAutoRepeatDelay(400); //触发长按的时间 pBtnSub->setAutoRepeatInterval(50); //长按时click信号间隔 connect(pBtnSub,&QPushButton::clicked,[&]{ qDebug()<<"send"; });

[Qt学习笔记]QPushButton点击事件和长按事件使用功能
文章图片

【[Qt学习笔记]QPushButton点击事件和长按事件使用功能】测试源码:AutoRepeat_Test

    推荐阅读