Qt 单击和双击事件响应实现

参考这篇博文实现:

http://www.cnblogs.com/siyuan/archive/2010/11/22/1883703.html

改动为:采用变量ClickedState标记点击状态,常态不点击为0,单击对应1,双击对应2,更方便实现。

 

(1) 首先新建一个MainWindow类。

(2) mainwindow.h文件中声明:

private slots: 
    void timerSingleClick(); //定时器事件,处理单击任务 

public: 
    QTimer* pQTimerSingleClicked; //单击后启动的定时器,用于判断是否触发了双击 
    int ClickedState; //点击状态,常态不点击为0,单击对应1,双击对应2

(3) mainwindow.cpp文件,构造函数中:

ClickedState = 0; //初始化不点击 
pQTimerSingleClicked= new QTimer(this); //新建定时器 
connect(pQTimerSingleClicked, SIGNAL(timeout()), this, SLOT(timerSingleClick())); //关联定时器和槽函数

(4) mainwindow.cpp文件,按钮点击的槽函数,包含双击响应代码:

void MainWindow::on_pushButton_clicked()
{
    ClickedState ++;

    if(ClickedState == 1)
        pQTimerSingleClicked->start(430); //430ms为自己设置

    if(ClickedState == 2)
    {
        ClickedState = 0; //初始化
        pQTimerSingleClicked->stop(); //停止定时器继续计时

        //按钮双击响应代码放这里
        QMessageBox::warning(this,tr("警告"),tr("我是双击!!!"),tr("确定"));
    }
}

(5) mainwindow.cpp文件,定时器事件响应槽函数,包含单击响应代码:

void MainWindow::timerSingleClick()
{
    ClickedState = 0; //初始化
    pQTimerSingleClicked->stop(); //定时器停止计时

    //按钮单击响应代码放这里
    QMessageBox::warning(this,tr("警告"),tr("单击"),tr("确定"));
}

完成。

 

个人认为相比于原帖子使用两个鼠标点击事件mousePressEvent和mouseDoubleClickEvent,本文使用一个按钮点击槽函数和一个状态量ClickedState解决,更实用,一个定时器参数也更好调节。

 

  • 10
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值