有没有办法在qt中卸载eventfilter?

Mar*_*inG 5 c++ events qt qobject qtcore

我只需要一段时间才能使用事件过滤器,有没有办法在以后卸载它?

lpa*_*app 7

在此处阅读Qt中事件系统的工作原理.这对于基本理解至关重要,尤其是本段:

QObject :: installEventFilter()函数通过设置事件过滤器来启用此功能,从而使指定的过滤器对象在其QObject :: eventFilter()函数中接收目标对象的事件.事件过滤器可以在目标对象执行之前处理事件,从而允许它根据需要检查和丢弃事件.可以使用QObject :: removeEventFilter()函数删除现有的事件过滤器.

阅读之后,您可以看到有一个反对部分installEventFilter,毫不奇怪,它被称为removeEventFilter.以下是Qt 5文档:

void QObject :: removeEventFilter(QObject*obj)

从此对象中删除事件过滤器对象obj.如果尚未安装此类事件过滤器,则会忽略该请求.

销毁此对象时,将自动删除此对象的所有事件过滤器.

即使在事件过滤器激活期间(即从eventFilter()函数中),删除事件过滤器总是安全的.


Tim*_*yer 5

就在这里。这是一个名为QObject::removeEventFilter 的函数。