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文件中声明:
(3) mainwindow.cpp文件,构造函数中:
(4) mainwindow.cpp文件,按钮点击的槽函数,包含双击响应代码:
(5) mainwindow.cpp文件,定时器事件响应槽函数,包含单击响应代码:
完成。
个人认为相比于原帖子使用两个鼠标点击事件mousePressEvent和mouseDoubleClickEvent,本文使用一个按钮点击槽函数和一个变量isDoubleClicked解决,更实用,一个定时器参数也更好调节。
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解决,更实用,一个定时器参数也更好调节。
相关文章推荐
- 实现响应双击消息时不执行单击事件
- VC中CTreeContrl实现响应单击或双击事件
- qt 实现、区分鼠标单击,双击事件
- CListCtl控件实现左键双击事件响应
- 稳扎稳打Silverlight(32) - 2.0Tip/Trick之MessageBox, Popup, 循环的几种实现方法, 动态变换主题, 本地化(多语言), 响应鼠标双击事件
- 扩展GridView控件(6) - 响应行的单击事件和双击事件
- 按钮单击双击响应事件
- 2.0Tip/Trick之MessageBox, Popup, 循环的几种实现方法, 动态变换主题, 本地化(多语言), 响应鼠标双击事件
- 实现按钮的左键单击和右键单击事件 编辑框的回车键和ctrl+enter组合键消息响应
- [IOS]实现IOS单击或者双击事件
- ios中控件同时响应单击和双击事件以及多击事件
- javascript 鼠标单击和双击事件并存的实现方法
- GridView/DataGrid行单击和双击事件实现代码(转)
- 扩展GridView控件(6) - 响应行的单击事件和双击事件
- GridView控件(六)—数据行响应鼠标的单击和双击事件
- GridView/DataGrid行单击和双击事件实现代码(转)
- Jquery实现双击行的同时不单计行(在Javascript中让单击Click和Double Click双击事件各自独立)
- Swing之table中响应鼠标双击(单击)事件
- 扩展GridView控件(6) - 响应行的单击事件和双击事件
- JS实现鼠标单击与双击事件共存