Qt-事件
1. Qt对事件的描述及分类
什么是事件
事件是由程序内部或者外部产生的事件或某种动作的统称。比如鼠标点击产生一鼠标事件,键盘按下产生一个键盘事件,窗口显示产生一个绘图事件等。事件通常是来自于底层的窗口系统,当然也可以手动发送自定义的事件,事件不同于信号,他既可以是同步的,也可以使一异步的,这取决于是使用sendEvent()还是postEvent()发送的事件。并且事件支持过滤,这在事件的处理和传递上是具有很大好处。Qt使用QEvent()及其子类处理事件,比如,QMoustEvent()处理与鼠标相关的事件。
事件的分类
- 根据事件的来源和传递凡是分类
- 自发事件:这些事件是由窗口系统生成,置于系统队列中,并在事件循环中一个一个处理。
- 发布的事件:这些事件由Qt和应用程序产生,并有Qt排队,经事件循环处理。
- 发送的事件:这些事件由Qt和应用程序产生,并直接发送到目标对象,不由事件循环处理。
- 事件的细分类型
事件的细分类型由QEvent中的枚举常量表示,比如鼠标事件QMouseEvent具有双击、移动、按下事件,这些事件可以使用MouseButtonDblClick、MouseMove、MouseButtonPress枚举常量表示。不同的事件表示方式可以通过 Type QEvent::type() const函数来获取。
事件继承