当前位置:   article > 正文

QT : 事件过滤器_as lnetdevbean

as lnetdevbean

事件过滤器可以接受所有被发送到这个对象的事件,然后对事件进行过滤。

加入一个控件中含有多个子控件,我们希望监视子控件的鼠标点击事件,那么一个最直接的方法就是继承子控件并且重写MousePressEvent函数。

然而一个更好的方式就是使用一个事件过滤器,监控父控件的事件,然后分发给子控件。

实现一个事件过滤器包括两个步骤:

  1. 在目标对象上调用installEventFilter(), 注册监视对象。
  2. 在监视对象的eventFilter()函数中处理目标对象的事件。
  1. child_widget->installEventFilter(this);
  2.  bool Parent_widget::eventFilter(QObject *watched, QEvent *event)
  3.  {
  4.      if(watched == child_widget)
  5.      {
  6.          if(event->type() == QEvent::MouseButtonPress)
  7.          {
  8. //do something
  9. return true;
  10.    }
  11. }
  12.      return false;
  13. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/573888
推荐阅读
相关标签
  

闽ICP备14008679号