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

时间:2014-07-16 10:40:37

标签: c++ qt events qtcore qobject

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

3 个答案:

答案 0 :(得分:7)

请阅读event system works in Qt here的内容。这对于基本理解至关重要,尤其是本段:

  

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

阅读完毕后,您可以看到installEventFilter有一个反对部分,毫不奇怪,它被称为removeEventFilterHere is the Qt 5 documentation它:

  

void QObject :: removeEventFilter(QObject * obj)

     

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

     

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

     

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

答案 1 :(得分:3)

来自Qt Docu:

void QObject :: removeEventFilter(QObject * obj)

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

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

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

答案 2 :(得分:3)

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

相关问题