Qt鼠标事件

Qt鼠标事件

QMouseEvent类用来表示一个鼠标事件,在窗口部件中按下鼠标或者移动鼠标光标时,都会产生鼠标事件。利用QMouseEvent类可以获知鼠标是哪个键按下了,鼠标指针的当前位置等信息。通常是重定义部件的鼠标事件处理函数来进行一些自定义的操作。QWheelEvent类用来表示鼠标滚轮事件,主要用来获取滚轮移动的方向和距离。

默认情况下,只有在按下鼠标按钮(不释放)时移动鼠标,才会产生鼠标移动事件,否则不会产生鼠标移动事件。除非使用QWidget::setMouseTracking()主动去开启鼠标跟踪,这时才会实时产生鼠标移动事件。

当在窗口部件内按下鼠标按钮时,Qt将自动抓取鼠标。窗口部件将持续接收鼠标事件,直到释放鼠标按钮。

鼠标事件包含一个特殊的接收标志,指示接收者是否需要该事件。如果不想鼠标事件被窗口部件处理,你应该调用ignore()。此时鼠标事件将在父窗口部件向上传播,直到窗口部件使用accept()接收鼠标事件,或者过滤掉鼠标事件。(注意:如果将鼠标事件传播到已为其设置 Qt::WA_NoMousePropagation的组件时,则该鼠标事件将不会在上一级组件中进一步传播)

1. QMouseEvent Class

 Header :    #include<QMouseEvent>
 qmake :     QT += gui
 inherits :  QInputEvent

QMouseEvent类的主要接口

1.1 Public Functions

// 构造函数
 QMouseEvent(QEvent::Type type, const QPointF &localPos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers);
 ​
 QMouseEvent(QEvent::Type type, const QPointF &localPos, const QPointF &screenPos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers);
 ​
 QMouseEvent(QEvent::Type type, const QPointF &localPos, const QPointF &windowPos, const QPointF &screenPos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers);
     
 QMouseEvent(QEvent::Type type, const QPointF &localPos, const QPointF &windowPos, const QPointF &screenPos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Qt::MouseEventSource source);
 // 返回产生鼠标事件的鼠标按键
 // 如果返回值为:Qt::NoButton,则产生的鼠标事件是鼠标移动事件
 Qt::MouseButton QMouseEvent::button() const 
 /*
  * 返回生成鼠标事件的鼠标按键
  * 返回的鼠标按键值是使用OR运算符的Qt::LeftButton, Qt::RightButton, Qt::MidButton。
  * 对于鼠标移动事件,返回值为:所有按键都被按下
  * 对于单击鼠标和双击鼠标事件,返回值为:被点击的鼠标按键
  * 对于释放鼠标按键事件,不包含此鼠标事件的返回状态
  */
 Qt::MouseButtons QMouseEvent::buttons() const
 ​
 /*
  * 返回鼠标事件的标志
  * 鼠标事件标志提供有关鼠标事件的附加信息。
  */
 Qt::MouseEventFlags QMouseEvent::flags() const
 // 当鼠标事件发生时,返回鼠标光标的全局位置
 // (此全局位置是以显示器屏幕左上角为坐标系原点)
 QPoint QMouseEvent::globalPos() const
 // 当鼠标事件发生时,返回鼠标光标的全局x轴方向坐标位置
 int QMouseEvent::globalX() const
 // 当鼠标事件发生时,返回鼠标光标的全局y轴方向坐标位置    
 int QMouseEvent::globalY() const
     
 // 当鼠标事件发生时,返回鼠标光标在接收事件窗口中的位置
 // (窗口部件左上角为坐标系原点)
 QPoint QMouseEvent::pos() const
 // 当鼠标事件发生时,返回鼠标光标在接收事件窗口部件的x轴方向坐标位置
 int QMouseEvent::x() const
 // 当鼠标事件发生时,返回鼠标光标在接收事件窗口部件的y轴方向坐标位置
 int QMouseEvent::y() const
     
 // 返回鼠标光标(QPointF)相对于接收事件的组件或项目的位置
 const QPointF &QMouseEvent::localPos() const
 // 返回鼠标光标(QPointF)相对于接收事件的屏幕的位置 
 const QPointF &QMouseEvent::screenPos() const
 // 返回鼠标光标(QPointF)相对于接收事件的窗口的位置 
 const QPointF &QMouseEvent::windowPos() const
 // 返回有关鼠标事件源的信息
 Qt::MouseEventSource QMouseEvent::source() const

2.例程

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值