Qt 把连续两次单击当成双击
方法1: 主要通过计时器,在一段时间内的连续两次单击,触发双击事件
void init()
{
m_nClickCount = 0;
m_timer = new QTimer(this);
connect(m_timer, SIGNAL(timeout()), this, SLOT(onKeyOneClick()));
}
void mouseReleaseEvent(QMouseEvent*)
{
if (!m_timer->isActive()) //计数期间,则不重新开始
{
m_timer->start();//300ms是判断双击的时间间隔,不唯一,可根据实际情况改变
}
m_nClickCount += ;
//300ms 内,两次单击则触发双击效果 ,然后停止计数
if(m_nClickCount == )
{
emit sigClose();
m_nClickCount = ;
m_timer->stop();
}
} void onKeyOneClick()
{
m_timer->stop();
m_nClickCount = ; }
方法2:
void MainWindow::mouseReleaseEvent(QMouseEvent *)
{
static int num = ;
static double time_Start = ;
static double time_End = ; num+=;
if(num == ){
time_Start = (double)clock();
qDebug()<< "num == 1";
if((time_Start - time_End) < ){//连续快速两次单击
//
qDebug()<< "click quickly " << time_Start - time_End ;
}
}
if(num == ){
num = ;
qDebug()<< "num == 2";
time_End = (double)clock();
if((time_End - time_Start) < ){//连续快速两次单击
//
qDebug()<< "click quickly " << time_End - time_Start ;
}
}
}
方法3:
void MainWindow::mouseReleaseEvent(QMouseEvent *)
{
static int num = ;
static struct timeval tpstart,tpend;
float timeuse; num+=;
if(num == ){
gettimeofday(&tpstart,NULL);
// timeuse=(1000000*(tpend.tv_sec-tpstart.tv_sec) + tpend.tv_usec-tpstart.tv_usec)/1000.0;
// qDebug()<< "num == 1 " << timeuse ;
// if(timeuse< 400){//连续快速两次单击
// //
// qDebug()<< "click quickly " ;
// }
}
if(num == ){
num = ;
gettimeofday(&tpend,NULL);
timeuse=(*(tpend.tv_sec-tpstart.tv_sec) + tpend.tv_usec-tpstart.tv_usec)/1000.0;
qDebug()<< "num == 2 " << timeuse;
if(timeuse < ){//连续快速两次单击
//
qDebug()<< "click quickly " ;
}
}
}
Qt 把连续两次单击当成双击的更多相关文章
- (转)MFC:Windows如何区分鼠标双击和两次单击
在Windows平台上,鼠标左键的按下.松开.快速的两次点击会产生WM_LBUTTONDOWN.WM_LBUTTONUP和WM_LBUTTONDBLCLK消息,但是Windows根据什么来区分连续的两 ...
- Qt:QPushButton 单击、双击响应区分
开发环境:win10+vs2015+qt5.9.1 背景:QPushButton的双击事件虽然一直有,但是在双击完成之前,总会响应到单击的事件处理或者连接槽,使用很不方便.自己子类化了一个QPushB ...
- (转) Windows如何区分鼠标双击和两次单击
Windows如何区分鼠标双击和两次单击 http://lbsloveldm.blog.hexun.com/12212875_d.html 在Windows平台上,鼠标左键的按下.松开.快速的两次点击 ...
- Angular JS中双击事件ng-dblclick避免同时触发两次单击事件ng-click的解决方案
有些需求中,需要一个元素上既有双击事件,也有单击事件,而两者实现的效果不一样. 这时可以使用ng-dblclick与ng-click来实现需求,但是要避免浏览器将双击事件误认为是两次单击事件,从而出现 ...
- javascript双击事件取消默认的两次单击事件
当一个元素同时具有单击和双击事件时,双击时会触发2次单击和1此双击事件. 双击会:先第1次单击 ,同时触发第2次和双击事件. 造成的不好影响:每次单击事件会延迟执行. <!DOCTYPE htm ...
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验四:按键模块③ — 单击与双击
实验四:按键模块③ - 单击与双击 实验三我们创建了"点击"还有"长点击"等有效按键的多功能按键模块.在此,实验四同样也是创建多功能按键模块,不过却有不同的有效 ...
- jquery 单击和双击事件冲突解决方案
先看一下点击事件的执行顺序: 单击(click):mousedown,mouseout,click: 双击(dblclick):mousedown,mouseout,click , mousedown ...
- winform里怎样在一个按钮上实现“单击”和“双击”事件?
Button按钮是没有双击事件(DoubleClick)的. button1.DoubleClick+=new EventHandler(button1_DoubleClick);使用这种方法在双击的 ...
- Hololens开发笔记之Gesture手势识别(单击,双击)
本文使用手势识别实现识别单击及双击手势的功能,当单击Cube时改变颜色为蓝色,当双击Cube时改变颜色为绿色. 手势识别是HoloLens交互的重要输入方法之一.HoloLens提供了底层API和高层 ...
随机推荐
- [windows官网]虚拟地址空间
虚拟地址空间 https://docs.microsoft.com/zh-cn/windows-hardware/drivers/gettingstarted/virtual-address-spac ...
- QT QcustomPlot的简单使用
第一步.QcustomPlot是QT提供的一个第三方库,在使用前需要在QcustomPlot官网上进行下载. 第二步.把解压完的QcustomPlot压缩包中的qcustomplot.h和qcusto ...
- matplotlib笔记2
颜色和样式 八种内建默认颜色缩写b:blue g:green r:red c:cyan m:magenta y:yellow k:black w:white其它颜色表示方法可以参照百度给的值https ...
- ndarray笔记
Numpy的介绍 1. Ndarray:N-dimensional array, N维数组 2. 一种由相同类型的元素组成的多维数组,元素数量是事先指定好的 例:建立Ndarray多维数组 nd ...
- excelize
// 参考:https://gitee.com/xurime/excelize // github.com/360EntSecGroup-Skylar/excelize
- Codeforces 1249 F. Maximum Weight Subset
传送门 设 $f[x][i]$ 表示 $x$ 的子树中,离 $x$ 最近的选择的节点距离为 $i$ 的合法方案的最大价值 设 $val[x]$ 表示节点 $x$ 的价值,首先有 $f[x][0]=va ...
- hdu 4745 two Rabits
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4745 题解:首先要抽象出题目要求的是啥.首先对于环的问题, 我们可以倍增成链,然后环的所有情况可以通过链来 ...
- MySQL高版本默认密码查找
解决方式如下: 1:找到mysql的安装目录到跟目录下找到Data文件夹 2:打开Data/文件夹找到一个以.err结尾的文件用记事本打开,里面记录了你安装Mysql的一些日志,其中就记录了你的初始密 ...
- c++opencv中线条细化算法
要达到的效果就是将线条尽量细化成单像素,按照论文上的Hilditch算法试了一下,发现效果不好,于是自己尝试着写了一下细化的算法,基本原理就是从上下左右四个方向向内收缩. 1.先是根据图片中的原则确定 ...
- Trie树(字典树)-题解 P2580 【于是他错误的点名开始了】
此题可以用STL中的map做,但是了解一下Trie树这个数据结构也是必须的. Trie树(又称字典树)有以下特点: 根节点不包含字符,除它之外的每一个节点都包含一个字符. 从根节点到某一节点,路径上经 ...