Qt:QPushButton 单击、双击响应区分

本文介绍了在Qt环境下,由于QPushButton在双击事件中会先触发单击事件,导致处理不便的问题。作者通过子类化QPushButton并使用定时器来区分单击和双击事件。当接收到单击事件时启动定时器,若定时器触发前未发生第二次单击,则视为单击事件;反之,若发生双击或第二次单击,视为双击事件。需要注意定时器只能触发一次,且在mouseRelease事件中判断是否已触发过doubleclick,以防止无限循环。文章建议定时器间隔不宜低于10ms,并鼓励读者自行测试或研究Qt源码以了解双击响应的精确判断方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发环境:win10+vs2015+qt5.9.1

背景:QPushButton的双击事件虽然一直有,但是在双击完成之前,总会响应到单击的事件处理或者连接槽,使用很不方便。自己子类化了一个QPushButton来区分这两种点击事件的处理

 1 /*
 2 * Description: 分开响应单击和双击的QPushButton
 3 * Author: 公子开明 KaiMing Prince
 4 * Detail: 默认的QPushButton,双击事件触发前会先触发单击事件,影响两个操作的分别处理
 5 * Class: DoubleClickedButton
 6 * Implement: 本类实现了QPushButton双击和单击的分别处理事件
 7 */
 8 #ifndef _DOUBLE_CLICKED_BUTTON_H__
 9 #define _DOUBLE_CLICKED_BUTTON_H__
10 #include <QPushButton>
11 
12 class QTimer;
13 
14 class DoubleClickedButton : public QPushButton
15 {
16     Q_OBJECT
17 
18 public:
19     DoubleClickedButton(QWidget *parent=Q_NULLPTR);
20   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值