Qt源码分析-事件如何触发信号

本文通过分析Qt源码,探讨了事件如何在Qt系统中转换为信号,特别是以QAbstractButton为例,展示了在mouseReleaseEvent中如何触发click信号。在QPushButton的mouseReleaseEvent实现中,调用基类的事件函数是触发信号的关键。
摘要由CSDN通过智能技术生成
/*信号触发点
在分析Qt的事件循环时,在Windows平台的事件分发器处理函数
QEventDispatcherWin32::processEvents中最终只有DispatchMessage(&msg);
来分发事件,并没有看到怎么触发信号的,所以想了解事件到底怎么转换成信号的

猜测,是Qt的GUi组件封装了Windows的组件,然后接受事件消息,调用事件函数时去发射信号

分析一个按钮的click信号吧
一般应该是在mouseReleaseEvent里触发的,一层一层看怎么处理的*/

void QWidget::mouseReleaseEvent(QMouseEvent *event)  //注意是虚函数
{
    event->ignore();//可以看到QWidget仅仅是忽略信号
}

//=========================QAbstractButton::mouseReleaseEvent====================
//再看派生自QW
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值