Qt event->buttons()与Qt event->button()的区别

在上一篇文章用到了这两个函数,在这里做一下分析。

event->button() :   返回产生事件的按钮

event->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返回"发生事件时还处于按下状态的按钮"

常用的判断条件(Event->buttons() && Qt::LeftButton)
如果鼠标左键处于按下状态,则结果为真,如果不考虑左右键都处于按下状态,则 与event->buttons() == Qt::LeftButton在结果上是相同的。

 

 

Event->buttons()的返回是 Qt::MouseButton
返回值为以下几种类型:
Qt::NoButton
0x00000000
Qt::LeftButton
0x00000001
Qt::RightButton
0x00000002
Qt::MidButton
0x00000004

当左键按下时,返回值是1
右键 2
中键 4
左+右 3
左+中 5
右+中 6
左右中 7

(Event->buttons() & Qt::LeftButton) //&为位运算符,按位进行与运算。
的意思是判断左键是否被按下,只有左键按下了,其返回值就是1(true)
 

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值