Qt事件系统

Qt事件系统

博文内容是对《Qt Creator快速入门(第3版)》(霍亚飞)知识内容的总结概括。

  1. 什么是事件?
  2. 如何处理事件?
  3. 事件的传递

什么是事件?

事件是对各种应用程序需要知道的由应用程序内部或外部产生的事情或者动作的通称。

如何处理事件?

任何继承自QObject的对象,都能用来处理事件。通常有以下五种方法:

  1. 重写部件的事件处理函数,比如paintEvent(),缺点是只能处理特定部件的特定事件;
  2. 重写notify()函数,优点是提供了完全的控制,先于事件过滤器得到事件;缺点是一次只能处理一个事件;
  3. 给QApplication对象添加事件过滤器,优点是能够处理多个事件;
  4. 重写event()事件函数,该函数先于事件处理函数得到事件;
  5. 在对象上安装事件过滤器。使用事件过滤器可以在一个界面类上同时处理不同子部件的不同事件。

事件的传递

事件传递用如下一张图来表示:
Qt事件系统