QT中重写事件过滤失效(返回了多个事件)
在 Qt 中,事件过滤器通过重写 eventFilter 函数来实现。这个函数允许你拦截并处理目标对象的事件。eventFilter 函数的签名如下:
bool QObject::eventFilter(QObject *watched, QEvent *event);
//返回 true 表示该事件已经被处理,并且不会再传递给目标对象或其他事件过滤器。
//返回 false 表示该事件没有被处理,应该继续传递给目标对象或下一个事件过滤器。
一般重写完最后要返回QObject::eventFilter(obj, event) 以便事件循环能够进行;但是有时候我们在返回前提前调用了QObject::eventFilter(obj, event)
bool QObject::eventFilter(QObject *watched, QEvent *event)
{QObject::eventFilter(obj, event); //!!提前调用return QObject::eventFilter(obj, event);
}
那这种将会导致eventFilter 函数最终会返回一个未定义的、随机的垃圾值(undefined behavior),这通常会导致不可预测和错误的行为。这其中可能就会导致我们写的事件过滤在QT中接收不到,达不到我们想要的结果,所以记得检查!!
以上的话就是本文的全部内容,如果有什么错误或者建议请指正,感谢!共同进步!