我只需要一段时间的事件过滤器,是否有办法卸载它以后?
请在这里阅读有关事件系统如何在Qt中工作的信息。这对于基本理解是至关重要的,尤其是这一段:
QObject::installEventFilter()函数通过设置一个事件过滤器来实现这一点,使指定的过滤器对象在其QObject::eventFilter()函数中接收目标对象的事件。事件过滤器在目标对象处理事件之前处理事件,允许它根据需要检查和丢弃事件。现有的事件过滤器可以使用QObject::removeEventFilter()函数删除。
阅读后,您可以看到installEventFilter
有一个对应的部分,毫不奇怪,它被称为removeEventFilter
。以下是Qt 5文档:
void QObject::removeEventFilter(QObject * obj)
从该对象中删除事件筛选器对象obj。如果没有安装这样的事件筛选器,请求将被忽略。
当该对象被销毁时,该对象的所有事件过滤器将自动删除。
删除事件过滤器总是安全的,即使在事件过滤器激活期间(即从eventFilter()函数)。
有。这个函数叫做QObject::removeEventFilter
From Qt Docu:
void QObject::removeEventFilter (QObject * obj)
从该对象中删除事件筛选器对象obj。如果没有安装这样的事件筛选器,请求将被忽略。
当该对象被销毁时,该对象的所有事件过滤器将自动删除。
删除事件过滤器总是安全的,即使在事件过滤器激活期间(即从eventFilter()函数)。