事件处理(事件基础知识)

Event基础

1,Qt中,事件作为一个对象,继承自QEvent类。

常见的事件有:键盘事件QKeyEvent、鼠标事件QMouseEvent、定时器事件QTimerEvent、关闭事件QCloseEvent、输入事件QInputEvent等

2,一个事件由一个特定的QEvent子类来表示,但是有时一个特定QEvent子类来表示,但是有时一个事件又包含多个事件类型,比如鼠标事件又可以分为鼠标按下、单击、双击、移动等操作,这些事件类型都由QEvent类的枚举型QEvent::Type来表示,其中包含了一百多种事件类型,QEvent帮助文档一查便知。

比如鼠标事件就由一个QMouseEvent对象来表示,但是鼠标触发的事件又有很多种类型,这些类型就由 QMouseEvent 内的多个枚举类型来表示

3,虽然QEvent的子类可以表示一个事件,但是却不能用来处理事件

 

处理事件的方式

(QApplication类有 notify 函数)

  • 方法一

    重新实现部件的paintEvent()、mousePressEvent()等事件处理函数

    这种方法是最常用的一种方法,不过他只能用来处理特定部件的特定事件
     
  • 方法二

    重新实现notify()函数

    这个函数功能强大,提供了完全的控制,可以在事件过滤器得到事件之前就能获得它们

    但是,他一次处理一个事件
     
  • 方法三

    QApplication对象上安装事件过滤器

    因为一个程序只有一个QApplication对象,所以这样实现的功能与使用notify()函数是相同的。

    优点是,可以同时处理多个事件
     
  • 方法四

    重新实现event()函数

    QObject类的event()函数可以在事件到达默认的事件处理函数之前获得该事件
     
  • 方法五

    对象上安装事件过滤器

    使用事件过滤器可以在一个界面类中同时处理不同子部件的不同事件



在实际开发中,常用方法一、方法五。
事件二、三虽然功能强大,却很少用到。因为一个继承自QApplication类,一个要用全局的事件过滤器

 

参考:

不二如是:https://fishc.com.cn/forum.php?mod=viewthread&tid=77331&ctid=447

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柔弱胜刚强.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值