zoukankan      html  css  js  c++  java
  • 【QT】 Qt之QComboBox删除下拉item时出现段错误

    问题

    使用clear()和removeItem()清空和删除QComboBox中下拉item时,通过调试出现以下两种报错:

    (1)正常运行程序出现的报错:xxxSogouInputComponents

    (2)通过QT调试出现的报错

    Signal received 
    The inferior stopped because it received a signal from the Operating System. 
    Signal name : SIGSEGV 
    Signal meaning : Segmentation fault
    

    解决方法

    • 一开始找了很久都没发现是什么问题,然后通过百度,看到有博主是通过以下的方法解决的,所以就尝试了下,发现真的有效,方法如下图:

    • 后来想一想为什么取消信号的关联就可以正常了呢?信号与槽的关联无非就是信号一发出,槽函数就会执行的这么一个机制。所以再进行深一步的查找问题,发现调用QComboBox中的clear()和removeItem()方法时,该控件一样也会发出SIGNAL(currentIndexChanged(int))的信号,那么这样就可以定位有可能是关联currentIndexChanged(int)信号的槽函数有错误,从而导致的段错误。细找,发现真的是槽函数访问数据越界导致的段错误。

    总结

    • 问题原因: qt中出现以上的错误一般原因是因为访问数据越界或者使用野指针导致的错误。

    • 教训: 在写的每一行代码都应该要有安全机制,避免出现段错误,有时候一些小小问题导致的段错误会让你找到怀疑人生。

  • 相关阅读:
    Mysql 重做日志及与二进制日志的区别
    【MySql】性能优化之分析命令
    ubuntu一些基本软件安装方法
    Linux学习笔记
    exp/imp三种模式——完全、用户、表
    Oracle学习日志20150302
    如何在macOS Sierra中运行CORE Keygen破解程序
    国内各大互联网公司技术站点集合
    React Native资料
    React Native集成到现有项目(非cocoa pods)
  • 原文地址:https://www.cnblogs.com/lcgbk/p/13846950.html
Copyright © 2011-2022 走看看