Qt事件event总结

现在我们可以总结一下 Qt 的事件处理,实际上是有五个层次:

  • 重写 paintEvent()、mousePressEvent() 等事件处理函数。这是最普通、最简单的形式,同时功能也最简单。
  • 重写 event() 函数。event() 函数是所有对象的事件入口,QObject 和 QWidget 中的实现,默认是把事件传递给特定的事件处理函数。
  • 在特定对象上面安装事件过滤器。该过滤器仅过滤该对象接收到的事件。
  • 在 QCoreApplication::instance() 上面安装事件过滤器。该过滤器将过滤所有对象的所有事件,因此和 notify() 函数一样强大,但是它更灵活,因为可以安装多个过滤器。全局的事件过滤器可以看到 disabled 组件上面发出的鼠标事件。全局过滤器有一个问题:只能用在主线程。
  • 重写 QCoreApplication::notify() 函数。这是最强大的,和全局事件过滤器一样提供完全控制,并且不受线程的限制。但是全局范围内只能有一个被使用(因为 QCoreApplication 是单例的)。

 

event();是事件分发;

paintEvent()、mousePressEvent() 等是事件处理函数;

eventFilter ( QObject * watched, QEvent * event );事件滤波器;

 

继承Qevent可以自定义事件,像鼠标事件,按键事件,触摸屏事件;

 

事件的本质:事件处理函数中发送信息,即mousePressEvent()发送信号。事件是更底层的,事件驱动各种响应,事件驱动程序,事件可以多线程共享。

 

参考:https://www.qter.org/forum.php?mod=viewthread&tid=643

你可能感兴趣的:(#,QT学习修炼,Qt事件总结)