Qt 的事件

Posted ll-10

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt 的事件相关的知识,希望对你有一定的参考价值。

一个事件由一个特定的QEvent子类来表示,如QMouseEvent、QKeyEvent

处理一个事件的方法:

方法一:重新实现部件的paintEvent、mousePressEvent等事件处理函数。 最常用,不过只能处理特定部件的特点事件。

方法二:在对象上安装事件过滤器。使用事件过滤器可以在一个界面类中同时处理不同子部件的不同事件。  也比较常用

方法三:重新实现event函数,类似于第一种,但可以处理多种不同事件。

 

Qt 中,事件的传递顺序是:

1. 先进入事件过滤器。

2. 然后通过事件过滤器可以判断是哪个部件发生的事件。

3. 再执行该焦点部件的event()函数。

4. 最后是焦点部件的事件处理函数,如keyPressEvent()。

5. 如果焦点部件忽略了该事件(event->ignore()),那么执行父部件的事件处理函数。

 

注意:event函数和事件处理函数是在焦点部件内重新定义的,而事件过滤器则是在焦点部件的父部件中重新定义。

 

以上是关于Qt 的事件的主要内容,如果未能解决你的问题,请参考以下文章

Qt--Qt中的事件处理

QT学习_QT常用事件

Qt事件机制---信号通过事件实现,事件可以过滤,事件更底层,事件是基础,信号是扩展。

Qt 事件处理和事件过滤器的返回值

QT开发——QT事件处理机制

QT事件循环