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";});
测试源码:AutoRepeat_Test