系统不可能知道你这一次单击鼠标是为了双击指令,所以在你第一次按下鼠标时,系统会发出一个WM_XBUTTONDOWN(也就是clicked),

当你第二次单击鼠标时,系统先发送WM_XBUTTONDOWN,然后发现距离上一次单击鼠标间隔不到N毫秒(注册表中设置),于是发出双击消息,程序收到消息,调用doubleClicked

QWidget中一次双击只会触发一次单击和一次双击事件。

而在QAbstractItemView中,如果设置void setEditTriggers ( EditTriggers triggers ) 禁用了双击鼠标编辑功能,则:

一次双击中调用次序是clicked、doubleClicked、clicked。

解决双击会触发两次单击,方法:

https://wenku.baidu.com/view/7a6e9b5d03d8ce2f01662342.html

#include "testclick.h"
#include <qdebug.h>
#include <QKeyEvent>
#include <QStringListModel> TestClick::TestClick(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this); m_pTimer = new QTimer(this);
m_bDouble = false; QStringList leaders;
leaders<<"qq"<<"aa"<<"zz"<<"ww"<<"ss"<<"xx";
QStringListModel *model = new QStringListModel();
model->setStringList(leaders);
ui.listView->setModel(model);
ui.listView->setEditTriggers(QAbstractItemView::NoEditTriggers); connect(ui.listView,SIGNAL(clicked(const QModelIndex&)),this, SLOT(slot_click(const QModelIndex&)));
connect(ui.listView,SIGNAL(doubleClicked(const QModelIndex&)),this, SLOT(slot_DbClick(const QModelIndex&)));
connect(m_pTimer, SIGNAL(timeout()),this, SLOT(slot_timeOut())); } TestClick::~TestClick()
{ } void TestClick::slot_click(const QModelIndex& mi)
{
//qDebug() << "slot_click";
if (!m_bDouble)
{
m_pTimer->start();
} m_bDouble = false;
} void TestClick::slot_DbClick(const QModelIndex& mi)
{
//qDebug() << "slot_DbClick";
m_bDouble = true;
m_pTimer->stop(); this->run_DbClick();
} void TestClick::slot_timeOut()
{
if (!m_bDouble)
{
this->run_Click();
}
} //单击调用
void TestClick::run_Click()
{ } //双击调用
void TestClick::run_DbClick()
{ }

QAbstractItemView区分单双击的更多相关文章

  1. WinForm中DataGridView的使用(四) - 区分单双击事件

    虽然DataGridView单双击事件都有,但双击事件其实也会触发单击事件的处理,所以如果双击事件和单击事件的行为不同,或者双击时不想触发单击事件,或者单击事件会阻塞双击事件的处理时(比如单击后会有弹 ...

  2. js中字符串的replace方法区分单双引号

    今天遇到一问题,js文件中调用字符串的replace方法,不起作用. 后来排查可能觉得replace("<option  value='1'>admin</option&g ...

  3. JQuery如何实现双击事件时不触发单击事件,解决鼠标单双击冲突问题

    在jQuery的事件绑定中,如果元素同时绑定了单击事件(click)和双击事件(dblclick),那么执行单击事件(click)时,不会触发双击事件(dblclick), 执行双击事件(dblcli ...

  4. jQuery解决鼠标单双击问题

    html代码如下: <button>点击</button> JQ代码如下: <script> $(function () { // 编写相关jQuery代码 // ...

  5. JQuery解决鼠标单双击冲突问题

    转自链接:https://www.shuzhiduo.com/A/xl560MKrzr/ 在jQuery的事件绑定中,如果元素同时绑定了单击事件(click)和双击事件(dblclick),那么执行单 ...

  6. (转) Windows如何区分鼠标双击和两次单击

    Windows如何区分鼠标双击和两次单击 http://lbsloveldm.blog.hexun.com/12212875_d.html 在Windows平台上,鼠标左键的按下.松开.快速的两次点击 ...

  7. js区分鼠标单双击 阻止事件冒泡

    function clickOrDblClick(obj) { count++; if (obj != undefined) { var rowStr = $.trim($(obj).find(&qu ...

  8. (转)MFC:Windows如何区分鼠标双击和两次单击

    在Windows平台上,鼠标左键的按下.松开.快速的两次点击会产生WM_LBUTTONDOWN.WM_LBUTTONUP和WM_LBUTTONDBLCLK消息,但是Windows根据什么来区分连续的两 ...

  9. iOS UIButton单双击处理响应不同的方法

    //显示目标 双击显示当前用户坐标位置 UIButton * btnShowDistination = [[UIButton alloc]initWithFrame:CGRectMake(, SCRE ...

随机推荐

  1. _itemmod_hidden

    该表中的物品放在背包或银行中中会计算属性 `entry`物品ID `comment` 备注

  2. _spellmod_aura_trigger

    一.spell.dbc做一个空光环 二.配置_spellmod_aura_trigger表 comment 备注 aura 光环ID,有此光环时,才会触发下面技能 linkSpell1-3 链接的技能 ...

  3. python 部分函数

    abs(number) ,返回数字的绝对值cmath.sqrt(number) ,返回平方根,也可以应用于负数float(object) ,把字符串和数字转换为浮点数help() ,提供交互式帮助in ...

  4. python中shutil模块

    shutil是对OS中文件操作的补充:移动.复制.打包.压缩.解压. 1.copy文件内容到另一个文件,可以copy指定大小的内容. shutil.copyfileobj(fsrc, fdst[, l ...

  5. EndNote基础教程

    endnote的使用方法 http://www.360doc.com/content/17/1211/08/31841004_711998509.shtml 导入文献 File-Import-Flod ...

  6. Python Selenium 文件上传之Autoit

    今天补充一种文件上传的方法 主要是因为工作中使用SendKeys方法不稳定,具体方法见: Python Selenium 文件上传之SendKeys 这种方法直接通过命令行执行脚本时没有问题,可以成功 ...

  7. Angular 学习笔记 (version 6 小笔记)

    1. lazyload 的 path 变成相对路径了, 不过如果你用 ng update 的话, 依然可以不需要修改, cli config 好像能调支持绝对路径的写法. const routes: ...

  8. 拖图UI和纯代码UI

    1拖图UI, 优点:适合快速实验各种天马行空的想法 缺点:太多的storyBoard不好管理,不适合较大的项目,如果一个项目有价值,或成熟了,为了维护拓展,就最好改为纯代码 2纯代码UI 优点:1好维 ...

  9. Android -------- MVC,MVP 和 MVVM 架构设计模式

    MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用.它本身很容易理解,但是要讲清楚,它与衍生的 MVP 和 MVVM 架构的区别就不容易了. 一.MVC MV ...

  10. 大div中嵌套小div,点击大div时隐藏,点击小div不隐藏

    给小div添加一个click事件 <div onClick="event.cancelBubble = true">  //小div