>原创文章,可以转载,转载时请以超链接形式保留本文地址、作者信息和本声明。否则将追究法律责任。
我们可能会遇到这样一种需求——监测某个对象的事件投递过程,分析或者拦截某个事件,这时我们就要用到事件过滤器了。什么是事件过滤器呢?事件过滤器本质上是QObject子类的一个对象,该对象重载了eventFilter接口。
如果使用事件过滤器呢?
1 定义QObject子类A,重载eventFilter接口,在这个接口中实现过滤功能;
2 被观察者必须是QObject或者QObject子类的对象,调用QObject::installEventFilter()传入A的对象,即可完成A对该对象的监测;
3 过滤器比事件实际接受者要早一步得到事件。
假设有一个类CInspectA 用于截获事件,当截获事件时输出字符串提示,代码调用过程如下:
监测者类声明:
#ifndef CINSPECT_H
#define CINSPECT_H
#include <QObject>
class CInspectA : public QObject
{
Q_OBJECT
public:
expl