我是靠谱客的博主 苗条柠檬,最近开发中收集的这篇文章主要介绍Qt鼠标事件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.例程

最后

以上就是苗条柠檬为你收集整理的Qt鼠标事件Qt鼠标事件的全部内容,希望文章能够帮你解决Qt鼠标事件Qt鼠标事件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部