Qt WheelEvent,如果按下滚轮怎么办?

时间:2014-08-14 12:47:20

标签: c++ qt

我正在开发一个Qt应用程序,我知道有一个wheelEvent来获得轮子的状态,但是我无法找到如何知道轮子是否被按下。 谢谢!

2 个答案:

答案 0 :(得分:2)

轮子事件设置buttons which are being pressed。它还设置了按下的键盘修改键(例如SHIFTCRTL)。

void MyWidget::wheelEvent ( QWheelEvent * event )
{
  if(event->buttons() & Qt::MiddleButton != 0)
  {
    //the mid button is being pressed. handle.
  }
}

Here is a list of possible buttons。它们被设置为标志,即Qt::LeftButton | Qt::RightButton

编辑:

默认情况下,滚轮与中间按钮相关联。在车轮事件中,车轮可以在没有相关按钮的情况下移动。例如,在Chrome浏览器上移动滚轮。按下滚轮将改变屏幕上的光标以及滚轮的行为(试一试)。

如果你有一个带有滚轮和中间按钮的奇怪鼠标:

  • 按中间按钮将生成MouseEvent Qt::MiddleButton
  • 按下滚轮按钮将生成WheelEvent Qt::MiddleButton

答案 1 :(得分:0)

查看QMouseEvent的文档。抓住该事件并注意第三个鼠标按钮。

如果您对某个事件不感兴趣,但对该按钮的状态不感兴趣,您可能也对QGuiApplication :: mouseButtons()感兴趣。