您的位置:首页 > 编程语言 > Qt开发

QT5:事件层次.

2016-04-04 00:00 253 查看
重写
paintEvent()
mousePressEvent()
等事件处理函数。这是最普通、最简单的形式,同时功能也最简单。

重写
event()
函数。
event()
函数是所有对象的事件入口,
QObject
QWidget
中的实现,默认是把事件传递给特定的事件处理函数。

在特定对象上面安装事件过滤器。该过滤器仅过滤该对象接收到的事件。

QCoreApplication::instance()
上面安装事件过滤器。该过滤器将过滤所有对象的所有事件,因此和
notify()
函数一样强大,但是它更灵活,因为可以安装多个过滤器。全局的事件过滤器可以看到 disabled 组件上面发出的鼠标事件。全局过滤器有一个问题:只能用在主线程。

重写
QCoreApplication::notify()
函数。这是最强大的,和全局事件过滤器一样提供完全控制,并且不受线程的限制。但是全局范围内只能有一个被使用(因为
QCoreApplication
是单例的)。

(virtual) bool QCoreApplication::notify(QObject* receiver, QEvent* event);


该函数会将
event
发送给
receiver
,也就是调用
receiver->event(event)
,其返回值就是来自
receiver
的事件处理器。注意,这个函数为任意线程的任意对象的任意事件调用,因此,它不存在事件过滤器的线程的问题。不过我们并不推荐这么做,因为
notify()
函数只有一个,而事件过滤器要灵活得多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: