繁体   English   中英

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

[英]Is there a way to uninstall eventfilter in qt?

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

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

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

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

void QObject :: removeEventFilter(QObject * obj)

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

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

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

来自Qt Docu:

void QObject :: removeEventFilter(QObject * obj)

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM