乐趣区

关于qt5: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";});


测试源码:AutoRepeat_Test

退出移动版