QT程序崩溃记录1_assert failure in qcoreapplication::sendevent: "ca-程序员宅基地

技术标签: qt  QT程序崩溃原因记录  

1、错误1

ASSERT failure in QCoreApplication::sendEvent: “Cannot send events to objects owned by a different thread. Current thread 0x0x2599c080. Receiver ‘’ (of type ‘QNativeSocketEngine’) was created in thread 0x0x2b0776b0”
在这里插入图片描述
如下代码,直接在mainwindow中调用DisConnect,会导致程序崩溃,且报错如上图。
原因:m_serial被移到线程中,只能在线程中调用,不能在主线程中直接调用
解决方法:使用信号槽调用DisConnect
出错过程分析:

//1、构造函数中将类移到了线程中
    m_serial = NULL;
    m_th = new QThread();
    this->moveToThread(m_th);
//2、串口移到线程中
    m_serial = new QSerialPort();
    m_serial->moveToThread(m_th);
//3、断开连接
void ConnectSerial::DisConnect()
{
    
    qDebug() << "this thread 2" << QThread::currentThread() <<"id" << QThread::currentThreadId();
    if(m_serial != NULL)
    {
    
        if(m_serial->isOpen())
        {
    
            disconnect(m_serial,&QSerialPort::readyRead,this,&ConnectSerial::readData);
            m_serial->close();
        }
        delete m_serial;
        m_serial = NULL;
    }
}
//在mainwindow中直接调用函数
    m_SendSerial->DisConnect();

如下图:DisConnect函数所在线程与m_Serial所在线程不一致,DisConnect还在主线程中,
在这里插入图片描述

解决方法

//连接信号槽
    connect(this,&ConnectSerial::disConnect,this,&ConnectSerial::DisConnect);
//在mainwindow中调用信号
    m_SendSerial->disConnect();

如下图:DisConnect函数所在线程与mSerial所在线程一致。
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42195999/article/details/134659463

智能推荐

PHPExcel导出excel打开失败_phpspreadsheet生成的excel文件,office打不开-程序员宅基地

文章浏览阅读502次。PHPExcel文件导出打不开_phpspreadsheet生成的excel文件,office打不开

print语句使输出不自动换行-程序员宅基地

文章浏览阅读1k次。python 2:  在print语句最后加一个逗号即可实现  例如:print 1,2,python 3:  可在输出最后添加 end ='' ,即使用end的内容作为最后结束的符号,print在不手动设置end时,默认设置为‘\n'换行,所以只用print也可表示为换行,当然end中也可设置为其他值,如图:  ..._js print()不换行

Linux Kernel线性映射代码分析_kernel 线性映射-程序员宅基地

文章浏览阅读34次。在Linux Kernel启动过程中,会根据物理内存的大小以及虚拟内存空间大小,决定线性映射区间的大小。在ARM64架构中,由于虚拟地址空间足够大,正常情况下都会对memory建立线性映射,有的也叫直接映射。本文主要是走读线性映射的代码。_kernel 线性映射

【测试篇】实战设计测试用例(面试必问)-程序员宅基地

文章浏览阅读241次,点赞14次,收藏5次。测试物体水杯、测试软件微信朋友圈

redisson使用全解——redisson官方文档+注释(中篇)-程序员宅基地

文章浏览阅读3.5w次,点赞39次,收藏247次。接上篇redisson使用全解——redisson官方文档+注释(上篇)基于Redis的Redisson分布式可重入锁RLock Java对象实现了java.util.concurrent.locks.Lock接口。同时还提供了异步(Async)、反射式(Reactive)和RxJava2标准的接口。大家都知道,如果负责储存这个分布式锁的Redisson节点宕机以后,而且这个锁正好处于锁住的状态时,这个锁会出现锁死的状态。为了避免这种情况的发生,Redisson内部提供了一个监控锁的看门狗,它的作用是在R_redisson

MySql——将表的结构导出成Excel_mysql 数据库表结构变成excel表-程序员宅基地

文章浏览阅读2k次。步骤一:执行sql语句SELECTCOLUMN_NAME 列名,COLUMN_TYPE 数据类型,DATA_TYPE 字段类型,CHARACTER_MAXIMUM_LENGTH 长度,IS_NULLABLE 是否为空,COLUMN_DEFAULT 默认值,COLUMN_COMMENT 备注 FROMINFORMATION_SCHEMA.COLUMNSwheretable..._mysql 数据库表结构变成excel表

随便推点

实现Android手机中隐藏App图标_app 隐藏图标检测-程序员宅基地

文章浏览阅读2.6k次。在AndroidManifest中application节点下面intent-filter里面加入下面语句 android:host="MainActivity" android:scheme="com.zhangton.monitor" />android:scheme后面的是包名_app 隐藏图标检测

集成学习(ensemble learning)-程序员宅基地

文章浏览阅读2.7k次。文章目录一 引言二 Bagging三 Boosting参考一 引言集成学习(ensemble learning),它通过将多个学习器集成在一起来达到学习的目的。主要是将有限的模型相互组合,其名称有时也会有不同的叫法,有时也会被称为多分类器系统(multi-classifier system)、委员会学习(committee learning)。【1】集成学习利用一些方法改变原始训练样本的分布,构建多个不同的学习者器,然后将这些学习器组合起来完成学习任务,集成学习可获得比单一学习器显著优越的泛化性能,_集成学习

Javaweb环境搭建_搭建javaweb开发环境-程序员宅基地

文章浏览阅读7.5k次,点赞18次,收藏116次。目录一,Java Web介绍二,安装Java运行环境1.Java虚拟机(JVM)2.工具(1)如何下载编译器:(2)点击Download Pakeges(3)选择所需要的版本和系统(4)点击"select Another Mirror"展开选项chain(5)进入到支付界面,支付可选可不选,不支付可直接点击click here直接下载3.JDK的安装4.配置环境变量三,搭建Java web环境1.什么是Tomcat?(1)外界部署Tomcat..._搭建javaweb开发环境

毕业设计-最新计算机专业毕业设计选题推荐及源码下载(安卓app,Android,微信小程序,javaweb)不断更新中-程序员宅基地

文章浏览阅读1k次,点赞26次,收藏19次。毕业设计-基于Android的校园跳蚤市场二手物品交易系统源码下载毕业设计-基于Android的的计步器社交平台系统源码下载毕业设计基于Android的飞机票预定航班系统源码下载 基于Android的社区居家养老服务APP的设计系统源码下载基于Android的论坛校园论坛BBS的设计与实现源码下载基于android的医院挂号预约智慧医疗app资源-毕业设计-基于Android的手机商城app系统源码基于android的推理游戏源码信息下载资源基于Android的医护查房系统app源码下载基于Android的

腾讯滑动验证码识别_腾讯滑块验证码识别平台-程序员宅基地

文章浏览阅读568次。输入图片,返回滑动距离(目标区域与适配区域的中心的距离),基于深度学习开发torch=1.6源码及数据集下载链接train是训练代码detect是测试代码data是数据集_腾讯滑块验证码识别平台

AssertionError: ..\..\best.pt (2 classes) trained on different --data than what yo【yolov5自训练报错日志及解决】_yolov5s.pt (80 classes) trained on different --dat-程序员宅基地

文章浏览阅读627次。运行Val.py时如下报错:AssertionError: ..\..\best.pt (2 classes) trained on different --data than what you passed (80 classes). Pass correct combination of --weights and --data that are trained together._yolov5s.pt (80 classes) trained on different --data than what you passed (9

推荐文章

热门文章

相关标签