QT事件和信号的区别

以window为例,Qt事件就是将windows底层的消息例如WM_KEYDOWN经过两三次转换为Qt::Key_Down的事件,按下键盘的Down会触发这个事件。

想了解信号与事件,最好看Qt的源码,以QPushButton为例,按下这个按钮是先触发的是mousePressEvent事件,在事件源码中会发射pressed()信号,松开按钮又触发mouseReleaseEvent事件,在事件源码中发射released()信号和clicked()信号。

事件对应的是信号产生的途径,例如按钮的按下松开。信号需要关注的是产生其的对象,例如按钮,槽函数需要找到信号对象,不会关心如何产生这个信号。

事件更底层,它是封装windows消息形成的,信号更偏上层一点。

总结:

qt中的事件其实就是封装的不同平台的事件。

信号,对于同步connect来说则是直接调用各槽函数,而异步connect则是分发一个事件,到各被链接的线程里,各线程里的eventloop收到事件再去执行对应的槽函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值