请在此处阅读Qt中事件系统的工作原理.这对于基本理解至关重要,尤其是本段:
QObject :: installEventFilter()函数通过设置事件过滤器来启用此功能,从而使指定的过滤器对象在其QObject :: eventFilter()函数中接收目标对象的事件.事件过滤器可以在目标对象执行之前处理事件,从而允许它根据需要检查和丢弃事件.可以使用QObject :: removeEventFilter()函数删除现有的事件过滤器.
阅读之后,您可以看到有一个反对部分installEventFilter,毫不奇怪,它被称为removeEventFilter.以下是Qt 5文档:
void QObject :: removeEventFilter(QObject*obj)
从此对象中删除事件过滤器对象obj.如果尚未安装此类事件过滤器,则会忽略该请求.
销毁此对象时,将自动删除此对象的所有事件过滤器.
即使在事件过滤器激活期间(即从eventFilter()函数中),删除事件过滤器总是安全的.