事件就是从抽象QEvent类中派生的对象,表示发生在应用程序内部或由于应用程序需要了解的外部活动而发生的事情。例如当用户按下鼠标、敲下键盘就会产生QMouseEvent和QKeyEvent;系统自动发出的QTimerEvent事件等。Qt事件系统是依托于元对象系统的,所有的QObject类都可以接收/处理QEvent事件。
一,事件的机制
1,事件的产生
事件就是对象,派生自QEvent抽象类,事件的产生,就是创建一个对象。例如在一个窗口界面,当我们鼠标点击、双击、移动等,就会产生一个QMouseEvent事件对象。事件的来源一般分为三个,来自窗口系统,例如鼠标键盘产生的QMouseEvent和QKeyEvent;来自其他程序,比如 QTimerEvent;来自Qt程序本身,一些自定义的事件等。
2, 事件类和事件类型
Qt中所有事件类都是继承QEvent,用户输入类事件继承关系。事件类都有个唯一身份值:type 值,也就是事件类型。需要注意有些事件类可能对应于多个事件类型,例如QMouseEvent类对应于鼠标按压事件,鼠标双击事件,鼠标移动事件等。
3,事件派发
当事件发生时Qt通过构造适当的QEvent子类的实例来表