目录
前言
根据视频看的事件处理,但是没有顺序,所以有点乱!不过理解起来也不麻烦!学习!分享!感谢!
Qt的事件分发过程
在QApplication::exec()
的事件循环中,会不断判断事件的产生,然后把产生的事件分派给对应的控件。比如,在QPushButton
中产生了keyPressEvent()
事件,这时候QApplication::exec()
会把事件分派给QPushButton::event()
,而如果QPushButton::event()
忽略了keyPressEvent()
,QMainWindow::event()
可以选择是否对这个事件进行处理。
所以,如果我们想自己处理事件,我们可以重写QPushButton::event()
事件,也可以重写QPushButton::keyPressEvent()
从上图可以知道,我们的事件先会到达event()
函数,在这个函数中判断发生的事件是什么,然后转到对应的事件进行处理。
重新实现event()
重新实现event()可以在事件到达特定的事件处理器之前进行处理,使用情形如下:
覆盖Tab键的默认功能
就是如果一个事件对于整个控件都有效,我们可以使用重写event()没有特定事件处理器的不常用事件
如果一个事件,比如没有QPushButton::keyPressEvent()
这样的特定事件处理器,我们可以在event()
中进行处理。自定义事件
类似同上
代码
- main.cpp
#include "