Qt4_事件处理

本文介绍了Qt中的事件处理机制,包括用户交互产生的键盘、鼠标事件以及窗口系统的绘制事件。同时,区分了事件和信号的区别,强调在使用窗口部件时信号的便利性,以及在实现自定义部件时事件处理器的重要性。还提到了Qt事件的类型识别和如何重写事件处理器。
摘要由CSDN通过智能技术生成

事件

事件(event)是由窗口系统或者Qt自身产生的,用以响应所发生的各类事情。当用户按下或者松开键盘或者鼠标上的按键时,就可以产生一个键盘或者鼠标事件;当某个窗口第一次显示的时候,就会产生一个绘制事件,用来告知窗口需要重新绘制它本身,从而使得该窗口可见。大多数事件是作为用户动作的响应而产生的,但是也有一些例外,比如像定时器事件,则是有系统独立产生的。

不应该混淆"事件"和"信号"这两个概念。一般情况下,在使用窗口部件的时候,信号是十分有用的;而在实现窗口部件时,事件则是十分有用的。例如,当使用QPushButton时,我们对于它的click()信号往往更为关注,而很少关心促成发射该信号的底层鼠标或者键盘事件。但是如果要实现的是一个类似于QPushButton的类,就需要编写一定的鼠标和键盘事件的代码,而且在必要的时候还需要发生clicked()信号。

重新实现事件处理器

在Qt中,事件就是QEvent子类的一个实例,Qt处理的事件类型有一百多种,其中的每一种都可以通过一个枚举值来进行识别。例如,QEvent::type()可以返回用于处理鼠标按键事件的QEvent::MouseButtonPress。

通过继承QObject,事件通过它们的event()函数来通知对象,在QWidget中的event()实现把绝大多数常用类型的事件提前传递给特定的事件处理器,例如mousePressEvent()/keyPressEvent()以及paintEvent()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阳光开朗男孩

你的鼓励是我最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值