QT断言assert崩溃解决

文章讲述了在Qt中自定义listItem时,由于对QLable文本设置引发的崩溃问题,源于在派生QObject时过早断开所有信号槽。解决办法是避免在QObject派生中广泛使用disconnectallSignals,确保信号和槽接收者完整。问题主要发生在Windows的Qt可访问性上下文。
摘要由CSDN通过智能技术生成

1、崩溃问题

自定义listItem,new出来之后,设置成员QLable的text,发生崩溃。

崩溃位置发生在qt的qaccessiblewidget.cpp;

2、解决过程

针对崩溃发生在QAccessibleWidget::window()指针为空,查询资料相关文档,在Loading...的bug报告有相关崩溃现象,在

记录有与我们代码中一致的过程,new了派生的对象,在new之前delete,在析构中有调用断开所有连接,

解释是在QObject中调用disconnect all Signals方法可能会导致不必要的副作用,甚至崩溃。已知的崩溃发生在Windows上Qt可访问性实现的上下文中,其中QObjects是通过被破坏的信号来跟踪的,断开所有信号会导致悬空指针。

针对这个解释,将该派生类中的断链所有信号槽的语句删除,该崩溃问题不再发生;

3、总结

在QObject派生中避免使用上面断开所有信号槽的用法,断开信号槽要把信号发出对象和槽接受对象参数都写全。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值