是否有一种方法来卸载事件过滤器在qt



我只需要一段时间的事件过滤器,是否有办法卸载它以后?

请在这里阅读有关事件系统如何在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()函数)。

最新更新