文章目录
1. 重新实现特殊的事件处理器
继承Qt作为基类, 重新实现(override
)像mousePressEvent()
,keyPressEvent()
这样特定的事件处理器。这是一种最为常见的方式。
2. 重新实现QObject::Event
重新实现event()
函数,可以在事件到达特定的事件处理器之前处理他们。这种方式通常用于处理那些不常见的、没有默认事件处理器的事件,比如: QEvent::HoverEnter
。重新实现event()
函数后,必须对没有处理的情况调用明确调用其基类的event()
函数。
3. 安装事件过滤器
目标对象使用installEventHandler()
函数注册过之后,所有用于目标对象的事件都会首先发送给监视对象的eventFilter()
函数中。如果一个目标对象安装了多个事件过滤器,则会根据安装顺序,逆序激活事件过滤器。
安装事件处理器的步骤为两步:
- 对目标对象调用
installEventHandler()
函数来注册监视对象 - 在监视对象的
eventFileter()
函数中处理目标对象的事件。
bool FilterObject::eventFilter(QObject *object, QEvent *event)
{
if(event->type() == QEvent::KeyPress)
{
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);