QT学习笔记5:QMouseEvent鼠标事件简介

本文介绍了Qt中的QMouseEvent类,包括其在鼠标事件处理中的角色,如单击、移动和释放。QMouseEvent不仅涉及鼠标按钮操作,还讨论了如何开启鼠标轨迹、事件传递机制、以及如何获取鼠标位置信息。同时提到了键盘事件和常用的成员函数。
摘要由CSDN通过智能技术生成

一、QMouseEvent的详细描述

首先请注意,Qt中的QMouseEvent一般只涉及鼠标左键或右键的单击、释放等操作,而对鼠标滚轮的响应则通过QWheeEvent来处理。

QMouseEvent类包含了用于描述鼠标事件的参数。

当在一个窗口里按住鼠标按键、或移动、或释放就会产生鼠标事件QMouseEvent。

鼠标移动事件只会在按下鼠标按键的情况下才会发生,除非通过显式调用QWidget::setMouseTracking()函数来开启鼠标轨迹,这种情况下只要鼠标指针在移动,就会产生一系列的QT鼠标事件;

在一个窗口中,当鼠标按键被按下时,QT会自动捕捉鼠标轨迹,鼠标指针所在的父窗口会继续接受鼠标事件,直到最后一个鼠标按键被释放。

二、QMouseEvent的传递

一个鼠标事件包含一些指定的接受标志flag用于指出该事件是否会被接收和处理 ,如果鼠标指针所在的父窗口不接收该事件则可以调用函数ignore()予以忽略;

多个重叠的窗口在实现里好比一个递归的倒立树,鼠标事件会沿着鼠标指针所在的父窗口的链表向上传递,直到某个窗口调用accept()函数进行事件处理,否则该事件将被过滤销毁掉;

如果一个鼠标事件传递给鼠标指针所在的窗口,而该窗口的QT::WA_NoMousePropagation位置为TRUE,则该事件不会通过父窗口继续向上传递。

可以通过函数pos()、x()、y()得知鼠标事件发生时鼠标指针相对于窗口的位置。

如果把移动窗口作为一次鼠标事件,可以通过函数globalPos()返回的全局坐标值避免窗口的抖动。 

可以使用QWidget::setEndabled()来开启/关闭对应的窗口是否接受键盘和鼠标事件。


需要对鼠标事件进行处理时,通常要重新实现以下几个鼠标事件处理函数:

QWidget::mousePressEvent()
QWidget::mouseReleaseEvent()
QWidget::mouseDoubleClickEvent()
QWidget::mouse
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值