【发布时间】:2014-09-06 20:39:01
【问题描述】:
我只需要一段时间的事件过滤器,以后有办法卸载它吗?
【问题讨论】:
标签: c++ qt events qtcore qobject
我只需要一段时间的事件过滤器,以后有办法卸载它吗?
【问题讨论】:
标签: c++ qt events qtcore qobject
请阅读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() 函数)。
【讨论】:
是的,有。这是一个名为QObject::removeEventFilter 的函数。
【讨论】:
来自 Qt 文档:
void QObject::removeEventFilter (QObject * obj)
从此对象中移除一个事件过滤器对象 obj。如果尚未安装此类事件过滤器,则忽略该请求。
当这个对象被销毁时,这个对象的所有事件过滤器都会被自动删除。
删除事件过滤器始终是安全的,即使在事件过滤器激活期间(即从 eventFilter() 函数)。
【讨论】: