Qt事件系统:鼠标事件和滚轮事件

一、 QMouseEvent - 鼠标事件

QMouseEvent 类用来表示一个鼠标事件,当在窗口部件中按下鼠标、释放鼠标和移动鼠标指针时,都会产生鼠标事件 QMouseEvent。利用 QMouseEvent 类可以获知鼠标是哪个键按下释放了、鼠标指针的当前位置等信息。通常是重定义窗口部件的鼠标事件处理函数来进行一些自定义的操作。

  • Qt 中的 QMouseEvent 一般只涉及按下鼠标、释放鼠标和移动鼠标指针等操作,而对鼠标滚轮的响应则通过 QWheeEvent 来处理。
  • 鼠标移动事件只会在按下鼠标按键的情况下才会发生,除非通过显式调用。
  • QWidget::setMouseTracking() 函数来开启鼠标轨迹,这种情况下只要鼠标指针在移动,就会产生一系列的 Qt 鼠标事件。

QMouseEvent 的传递

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

  • 如果想要鼠标指针所在的父窗口不接收该事件,则可以调用函数 ignore() 予以忽略。
  • 如果一个鼠标事件传递给鼠标指针所在的窗口,而该窗口的 QT::WA_NoMousePropagation 位置为TRUE,则该事件不会通过父窗口继续向上传递。
  • 可以使用 QWidget::setEnabled() 来开启/关闭对应的窗口是否接受键盘和鼠标事件。

鼠标事件实例

鼠标事件使用的时候,加头文件 <QMouseEvent>,然后在头文件中重写这些函数:

#include <QMouseEvent>

protected:
	// 鼠标按下事件
    void mousePressEvent(QMouseEvent * event);
    // 鼠标释放事件
    void mouseReleaseEvent(Q
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值