我只需要一段时间才能使用事件过滤器,以后有没有办法将其卸载?
答案 0 :(得分:7)
请阅读event system works in Qt here的内容。这对于基本理解至关重要,尤其是本段:
QObject :: installEventFilter()函数通过设置事件过滤器来启用此功能,从而使指定的过滤器对象在其QObject :: eventFilter()函数中接收目标对象的事件。事件过滤器可以在目标对象执行之前处理事件,从而允许它根据需要检查和丢弃事件。可以使用QObject :: removeEventFilter()函数删除现有的事件过滤器。
阅读完毕后,您可以看到installEventFilter
有一个反对部分,毫不奇怪,它被称为removeEventFilter
。 Here 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的函数。