关于qt信号和事件的区别的思考

1:一般在Qt中只是将精力放在发送信号上并不放在事件上,因为事件最终要发送一个信号。比如我们关心的是QPUshButton的鼠标点击事件,但我们不需要关心这个鼠标点击事件,而是关心它的clicked()信号。

Qt的事件很容易和信号槽混淆。
这里简单的说明一下,signal由具体对象发出,然后马上交给由connect函数链接的slot进行处理。(聚焦在发起信号的对象上。而对于事件,QT使用一个事件队列对所有发出的事件进行维护,当新事件产生时,会被追加到事件队列的尾部,前一个事件完后,取出后面事件进行处理。聚焦在事件上而不关心事件的发起者。因为事件循环由该发起对象维护。
但必要时,QT的事件也可以不进入事件队列,而是直接处理的,并且事件还可以使用事件过滤器

总的说当我们使用组件时关心的是信号槽。如果我们自定义组件,我们关心的是事件(在这个组件内的事件循环中处理该组件内的各种事件)。

2:或者说信号槽是对象之间的信息通讯的方式。事件是一个对象内部的一些功能的实现方式。

开始从工作中找乐趣
原文地址:https://www.cnblogs.com/keleman/p/14338146.html