一个事件由一个特定的QEvent子类来表示,如QMouseEvent、QKeyEvent函数
处理一个事件的方法:对象
方法一:从新实现部件的paintEvent、mousePressEvent等事件处理函数。 最经常使用,不过只能处理特定部件的特色事件。事件
方法二:在对象上安装事件过滤器。使用事件过滤器能够在一个界面类中同时处理不一样子部件的不一样事件。 也比较经常使用编译器
方法三:从新实现event函数,相似于第一种,但能够处理多种不一样事件。编译
Qt 中,事件的传递顺序是:event
1. 先进入事件过滤器。方法
2. 而后经过事件过滤器能够判断是哪一个部件发生的事件。界面
3. 再执行该焦点部件的event()函数。参数
4. 最后是焦点部件的事件处理函数,如keyPressEvent()。
5. 若是焦点部件忽略了该事件(event->ignore()),那么执行父部件的事件处理函数。
注意:event函数和事件处理函数是在焦点部件内从新定义的,而事件过滤器则是在焦点部件的父部件中从新定义。
在重写事件处理函数的时候,有时候传递event参数没有用到,这时编译器会报警告,加上“Q_UNUSED(event);” 这样就不会报警告了。