专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 软件架构设计

QT:QMouseEvent

发布时间:2011-06-20 02:11:19 文章来源:www.iduyao.cn 采编人员:星星草
QT::QMouseEvent
QMouseEvent类参考
QMouseEvent类用于描述鼠标事件
include<QMouseEvent>
继承于QInputEvent.
公有函数:
QMouseEvent ( Type type, const QPoint & position, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers )
              
QMouseEvent ( Type type, const QPoint & pos, const QPoint & globalPos, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers )
              
Qt::MouseButton button () const
Qt::MouseButtons buttons () const
const QPoint & globalPos () const
int globalX () const
int globalY () const
const QPoint & pos () const
QPointF posF () const
int x () const
int y () const


详细描述:
QMouseEvent类包含了用于描述鼠标事件的参数。当在一个窗口里按住鼠标按键,或移动,或释放就会产生鼠标事件。
鼠标移动事件只会在按下鼠标按键的情况下才会发生 ,除非通过显式调用QWidget::setMouseTracking()函数来开启
鼠标轨迹(这种情况下,只要鼠标指针在移动,就会产生一系列的QT处理事件),在一个窗口中,当鼠标按键被按下时,
QT会自动捕捉鼠标轨迹,鼠标指针所在的父窗口会继续接受鼠标事件,直到最后一个鼠标按键被释放。


一个鼠标事件包含一些指定的接受标志用于指出该事件是否会被接收和处理 ,如果鼠标指针所在的父窗口不接收该事件
可以调用函数ignore()予以忽视。多个重叠的窗口在实现里好比一个递归的倒立树,鼠标事件会沿着鼠标指针所在的父窗口的链表
向上传递,直到某个窗口调用accept()函数进行事件处理,或者改事件会 被过滤销毁掉。
如果一个鼠标事件传递给鼠标指针所在的窗口,而该窗口的QT::WA_NoMousePropagation位置为TRUE,则该事件不会通过父窗口继续向上传递


键盘的键位改变事件可以通过调用modifiers()函数而知道,该函数继承于QInputEvent类。


可以通过函数pos(),x(),y()得知鼠标事件发生时,鼠标指针相对于窗口的位置。如果把移动窗口作为一次鼠标事件,
可以通过函数blobal()返回的全局坐标值避免窗口的抖动。 QWidget::setEndabled()被用于开启/禁止对应的窗口是否接受键盘和鼠标事件。
可以通过重新实现QWidget事件句柄函数QWidget::mousePressEvent(),QWidget::mouseReleaseEvent(),QWidget::mouseDoubleClickEvent(),
QWidget::mouseMoveEvent,来让我们自己定义的窗口接受鼠标事件。




成员函数描述:
QMouseEvent::QMouseEvent ( Type type, const QPoint & position, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers )
初始化一个mouseEvent对象,
参数type必须是QEvent::MouseButtonPress, QEvent::MouseButtonRelease,QEvent::MouseButtonDblClick, or QEvent::MouseMove其中的一个。
参数position是鼠标指针相对于窗口的位置,
参数button作为鼠标事件所代表的值可以从QT::MouseButton的枚举列表中查找。如果参数type是一次MouseMove事件,
那么相对应的button取值就该为QT::NoButton.
在一次QT事件过程中,鼠标和键盘的状态位可以通过参数buttons和modifiers指定。
通过globalPos()的返回值来初始化QCursor::pos()有时候不是很恰当,可以通过其他的构造函数来显示指定全局坐标值。
(附注:要区分参数button 和 参数buttons)


QMouseEvent::QMouseEvent ( Type type, const QPoint & pos, const QPoint & globalPos, Qt::MouseButton button,Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers )
初始化一个mouseEvent对象,
参数type必须是QEvent::MouseButtonPress, QEvent::MouseButtonRelease,QEvent::MouseButtonDblClick, or QEvent::MouseMove其中的一个。
参数pos是鼠标指针相对于接受该鼠标事件窗口的位置,鼠标指针的全局坐标值可以通过globalPos指定。  
参数buttons作为鼠标事件所代表的值可以从QT::MouseButton的枚举列表中查找。如果参数type是一次MouseMove事件,
那么相对应的buttons取值就该为QT::NoButton.  
参数buttons用于标示在QT事件过程中所有的按键状态位,参数modifiers用于标示键盘按键切换期间的状态位。


Qt::MouseButton QMouseEvent::button () const
返回导致QT事件的button值,该值可以从QT::MouseButton的枚举列表中查找,当为鼠标指针移动事件时,返回值总是为QT::NoButton.


Qt::MouseButtons QMouseEvent::buttons () const
当一个QT事件生成时返回button状态位,该状态位联合Qt::LeftButton, Qt::RightButton, Qt::MidButton 并执行 或(OR  | )操作的结果。
对于鼠标指针移动事件,返回的总是按键被按下的状态位;
当按下鼠标按键或者双击时,返回的总是导致该事件的按键状态位;
对于鼠标按键释放所导致的事件,则不会执行OR操作。


const QPoint & QMouseEvent::globalPos () const
返回QT事件过程中鼠标指针的全局坐标值,对于异步窗口系统例如X11这是一个很重要的特性,无论何时移动窗口作为对鼠标事件的响应时,
globalPos()返回的当前鼠标指针坐标值和QCursor::pos()的返回值是有区别的,可以通过调用QWidget::mapToGlobal(pos())在窗口坐标
和全局坐标系之间进行转换。


int QMouseEvent::globalX () const
返回QT事件过程中横坐标X的全局坐标值。


int QMouseEvent::globalY () const
返回QT事件过程中横坐标Y的全局坐标值


const QPoint & QMouseEvent::pos () const
返回鼠标指针和接受该鼠标事件窗口的相对位置,如果把移动窗口作为一次对鼠标事件的响应,那么通过调用globalPos()返回的全局坐标值
可以避免窗口抖动。


QPointF QMouseEvent::posF () const
返回鼠标指针和接受该鼠标事件窗口的相对位置,该坐标值用float类型表示可以增加精确度,如果把移动窗口作为一次对鼠标事件的响应,
那么通过调用globalPos()返回的全局坐标值可以避免窗口抖动。该函数在QT4.4中有介绍。


int QMouseEvent::x () const
返回鼠标指针和接收鼠标事件窗口的相对位置的X轴坐标值。


int QMouseEvent::y () const
返回鼠标指针和接收鼠标事件窗口的相对位置的Y轴坐标值
                      
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: