函数 区别(官方解析)
button 返回产生事件的按钮
buttons 返回产生事件的按钮状态,函数返回当前按下的所有按钮,按钮状态可以是Qt::LeftButton,Qt::RightButton,Qt::MidButton或运算组合

假设鼠标左键已经按下:
如果移动鼠标,会发生move事件,button返回Qt::NoButton,buttons返回LeftButton;
再按下右键,会发生press事件,button返回RightButton,buttons返回LeftButton | RightButton;
再移动鼠标,会发生move事件,button返回Qt::NoButton,buttons返回LeftButton | RightButton;
再松开左键,会发生Release事件,button返回LeftButton,buttons返回RightButton。
也就是说,button返回“发生此事件的那个按钮”,buttons返回"发生此事件时处于按下状态的那些按钮"。

常用按钮值

按钮
NoButton 0x00000000
LeftButton 0x00000001
RightButton 0x00000002
MidButton 0x00000004 // ### Qt 6: remove me
MiddleButton MidButton
被按下按钮 返回值
左键 1
右键 2
中键 4
左 + 右 3
左 + 中 5
右 + 中 6
左 + 中 + 右 7

实例代码

判断方法 结果
event->button() == Qt::LeftButton && (event->buttons() & Qt::LeftButton) 左键按下
event->buttons() & Qt::LeftButton 左键处于一直按下
event->button() != Qt::LeftButton && (event->buttons() & Qt::LeftButton) 左键处于一直按下(此事件不是由左键发生)
event->button() == Qt::LeftButton && (!(event->buttons() & Qt::LeftButton)) 左键释放
event->button() == Qt::RightButton && (event->buttons() & Qt::RightButton) 右键按下
event->buttons() & Qt::RightButton 右键处于一直按下
event->button() != Qt::RightButton && (event->buttons() & Qt::RightButton) 右键处于一直按下(此事件不是由右键发生)
event->button() == Qt::RightButton && (!(event->buttons() & Qt::RightButton)) 右键释放
void MyWidget::mousePressEvent(QMouseEvent *event)
{processMouseEvent(event);
}void MyWidget::mouseReleaseEvent(QMouseEvent *event)
{processMouseEvent(event);
}void MyWidget::mouseMoveEvent(QMouseEvent *event)
{processMouseEvent(event);
}void MyWidget::processMouseEvent(QMouseEvent * event)
{if (event->button() == Qt::LeftButton && (event->buttons() & Qt::LeftButton)){// 左键按下}if (event->button() != Qt::LeftButton && (event->buttons() & Qt::LeftButton)){// 左键处于一直按下}if (event->button() == Qt::LeftButton && (!(event->buttons() & Qt::LeftButton))){// 左键释放}if (event->button() == Qt::RightButton && (event->buttons() & Qt::RightButton)){// 右键按下}if (event->button() != Qt::RightButton && (event->buttons() & Qt::RightButton)){// 右键处于一直按下}if (event->button() == Qt::RightButton && (!(event->buttons() & Qt::RightButton))){// 右键释放}

mouseMoveEvent中判断鼠标状态相关推荐

  1. html判断按键按下,javascript如何判断鼠标左键是否被按下?

    怎么在javascript中判断鼠标左键是否被按下?下面本篇文章就来给大家介绍一下使用javascript判断鼠标左键是否被按下的方法,希望对大家有所帮助. 在javascript中,可以通过Even ...

  2. BCB key事件中判断Shift、Alt、Ctrl状态

    BCB key事件中判断Shift.Alt.Ctrl状态: 类似此事件中 void __fastcall TForm1::keydown(TObject *Sender, WORD &Key, ...

  3. js判断鼠标位置是否在某个div中

    div的onmouseout事件让div消失时,会出现这样的情况,就是当鼠标移至div中的其它内容时,此时也判定为离开div,会触发 onmouseout事件,这样div中的内容就不能操作了.解决的办 ...

  4. 每个java程序都至少有一个线程给主线程,java程序在主线程中判断各个子线程状态的操作,该如何解决...

    java程序在主线程中判断各个子线程状态的操作 每个子线程在队列为空时会wait等待其他线程添加新url到队列,到最后所有子线程都取不到url时也会都wait住,要在主线程中判断如果所有的子线程都是w ...

  5. js判断wifi_使用JS在浏览器中判断当前网络连接状态的几种方法

    使用JS在浏览器中判断当前网络状态的几种方法如下: 1. navigator.onLine 2. ajax请求 3. 获取网络资源 4. bind() 1. navigator.onLine 通过na ...

  6. 如何判断SVG事件对象中的鼠标来源?

    在SVG中会经常遇到判断鼠标事件来源的问题,比如:鼠标单击或者双击.滚轮事件等等.这里做一个简单的介绍. 判断鼠标是左键还是右键? 在onclick事件中,if(evt.button==0)则为左击, ...

  7. html判断坐标,js判断鼠标位置是否在某个div中的方法

    本文实例讲述了js判断鼠标位置是否在某个div中的方法.分享给大家供大家参考,具体如下: div的onmouseout事件让div消失时,会出现这样的情况,就是当鼠标移至div中的其它内容时,此时也判 ...

  8. 动态规划之DP中判断是否到达某一状态(最短时间是什么)?

    codevs1684 垃圾陷阱  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述  Description 卡门--农夫约翰极其珍视的一条Holstei ...

  9. Unity中按钮检测鼠标状态

    改方法主要是用于按钮检测鼠标的进入.滑出.点击.抬起.长按.长按停止 1:先将下面这个脚本挂载到需要检测鼠标状态的按钮上 using System.Collections; using System. ...

最新文章

  1. 只需5行代码,手把手教你快速实现图像分割,代码逐行详解!
  2. 为什么 APP 纷纷开发“暗黑模式”?优酷最佳实践总结
  3. git如何选择性合并_小姐姐用 10 张动图,教会你 Git 命令使用
  4. 微服务架构案例(02):业务架构设计,系统分层管理
  5. bzoj1038 [ZJOI2008]瞭望塔 枚举
  6. c++语言截取字符串,C/C++知识点之C语言截取字符串
  7. 201521123009 《Java程序设计》第1周学习总结
  8. android studio for android learning (六)在布局中常使用的单位
  9. c++ 连接webservice实例
  10. 超难打地鼠 【安卓游戏】
  11. 零代码上线小布对话技能:技能平台的实践与思考
  12. 灰度图转热力图_热力图下看区域城市密集度,密集度较高的主要在沿海和省会周边...
  13. WMS 系统出入库理解
  14. 带宽与码元的关系_数据速率、载波频率和带宽的关系
  15. 基于态势感知的智能机器透明度与人-智能机团队效能研究
  16. AutoCAD:The miracle created by Autodesk
  17. IP-guard助力防御incaseformat蠕虫病毒
  18. 数学 HDU 1290 献给杭电五十周年校庆的礼物
  19. Android 控件view的可见,不可见,隐藏的设置和区别
  20. vue 计数器_Vuex实现计数器以及列表展示效果

热门文章

  1. 磁盘结构以及磁盘访问时间(柱面 磁头 扇区)
  2. 五、项目作业流程(华为项目管理法-孙科炎读书摘要)
  3. 腾讯生态酒店:刷脸入住、手机当门卡、订酒店如订电影票般便捷
  4. Microsoft Security Essentials 和 Windows Defender 离线升级包下载地址
  5. 生产环境Docker部署ELK跨区访问kafka不通问题的解决
  6. [USACO2.3]奶牛家谱 Cow Pedigrees
  7. 10月28号安全焦点DDOS事件背后内幕串串烧~~
  8. 藏不住啦,一起认识坐标南京的宝藏公司 D5渲染器
  9. 模拟鸡下蛋 Java_母鸡下蛋真有趣作文500字
  10. linux bonding 原理,linux bonding原理