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