Qt中buttons()和button()的区别,官方解析如下:
Qt::MouseButton QMouseEvent::button() const
返回产生事件的按钮
Qt::MouseButton QMouseEvent::buttons() const
返回产生事件的按钮状态,函数返回当前按下的所有按钮,按钮状态可以是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在结果上是相同的。