Qt事件处理器(一)——事件监视器
Qt事件模型是一个非常强大的功能。在事件模型中,可以通过设置监视器,监视发送给所有子部件的事件,并在监视代码中实现所需的行为。创建一个事件过滤器包括两个过程:
1.通过对目标对象调用installEventFilter()来注册监视对象。
2.在监视对象的eventFilter()函数中处理目标对象的事件。
形式:lineEdit->installEventFilter(obj);
obj->eventFilter(QObject* watchedObj, QEvent* event);
lineEdit->removeEventFilter(obj);
其中lineEdit是被监视对象,obj是监视器对象。在这个事件过滤器注册后,所有发送给lineEdit的事件,在到达之前会先被发送给obj的eventFilter()函数。
在eventFilter()函数里有3点需要注意:
1.当我们对事件进行完处理后,在eventFilter函数后,应该返回true,表示告知Qt已经处理完了,不必再传播出去了。如果返回false,则表示Qt将会把这个事件发送给指定的目标对象。
2.如果有多个监视器监视同一个对象,那么最后被注册的监视器的eventFilter()函数最先被激活。另外,在eventFilter函数中,如果删除了被监视对象,则必须返回true,阻止事件发送给被监视对象,否则程序会崩掉。
3.监视器和被监视对象必须在同一个线程中,如果两者不在同一个线程中,则在事件来临时,监视器不做任何事情。
posted on 2011-01-17 20:21 ActiveChange 阅读(1907) 评论(0) 收藏 举报