您的位置:首页 > 编程语言 > Qt开发

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

2016-11-23 10:03 633 查看
参考这篇博文实现:

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

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

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

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

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

public:
QTimer* pQTimerDoubleClicked; //判断单双击的定时器
int isDoubleClicked; //区分是单击还是双击


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

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


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

void MainWindow::on_pushButton_clicked()
{
isDoubleClicked++;
if(isDoubleClicked==1)
pQTimerDoubleClicked->start(430); //430ms为自己设置

if(isDoubleClicked==2)
{
isDoubleClicked = 0; //先初始化
pQTimerDoubleClicked->stop();//先初始化

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

}
}


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

void MainWindow::timerSingleClick()
{
isDoubleClicked = 0; //先初始化
pQTimerDoubleClicked->stop(); //先初始化

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


完成。

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









                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息