【Qt】信号分析:记录Qt内部信号发出时机

前言:
  Qt为我们封装了很多便捷使用的类和控件,还有相对非常丰富完善的文档。但是对于一些钻牛角尖的孩子(比如我),使用过程中总是会对一些Qt文档含糊不清的内容感到困惑,比如model/view框架下,什么情况下会发送dataChanged()这个信号,为什么我没发送这个信号view也会刷新呢?
  本文便对这些信号进行分析,理论上是需要扒源码的,但我现在能力和时间有限,就总结工作中遇到的一些现象吧。

QComboBox

在这里插入图片描述
QComboBox就是下拉框控件,在这里插入图片描述
从字面意义上理解,就是当我切换下拉框中的选项时会发送这个信号,这没有问题。于是我把这个信号连接到一个自定义的页面栈,当切换当前项时切换页面。
但是这时就出现了一个页面溢出的问题,即接收到这个信号但是没有创建对应的页面。
回顾程序发现,我的代码顺序是:combo添加项→页面添加页,切换combo时切换页面页。然鹅Qt在给Combo添加项时(即QComboBox::addItem() ),会自动切换到该项,即会发送currentChanged这个信号,而此时页面栈还没有添加对应的页,就会溢出。所以要注意这个问题。

总结:该信号在常规切换添加/删除项时都会发送。


注:由于本文没有扒源码,只是推理结论,如有错漏麻烦指出,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值