关于QT事件

Qt提供了5个级别的事件处理和事件过滤方法。

1.重新实现像mousePressEvent()这样的事件处理器。这事最常用的。

2.子类化QApplication并且重新实现notify()。QApplication::notify()用来给接收者发送一个指定事件。这种方法每次只能激活一个子类的event()函数去处理事件。

3.在qApp中注册事件过滤器,那么应用程序中的每个对象的每个事件都会在发送到其他事件过滤器之前,先发送给这个eventFilter()函数。它也可以用来处理那些发送 给失效窗口部件的鼠标事件。

4.重新实现QObject::event(),可以再这些事件到达特定的事件处理器之前处理他们。当重新实现event()时,必须对那些没有明确处理的情况调用其基类的event()函数。

5.在QObject中安装事件过滤器。这个过滤器可以获得所有用于目标对象的事件。如果在同一个对象上安装了多个事件过滤器,那么就会按照安装顺序逆序,从最近安装的到最先安装的,一次激活这些事件过滤器。

 

在处理需要长时间的操作时,为了保持界面的响应,有几种方法可以解决。

1.使用多线程,分别用于处理不同的响应。

2.在复杂操作的过程中频繁调用QApplication::processEvents()。这个函数告诉Qt处理所有那些还没有被处理的各类事件,然后将控制权返还给调用者。实际上QApplication::exec()就是一个不停调用processEvents()函数的while循环。

猜你喜欢

转载自happyprince.iteye.com/blog/2200057
今日推荐