• 1059阅读
  • 1回复

程序长时间运行,突然textEdit->settext() 位置崩溃 [复制链接]

上一主题 下一主题
离线xxbzls
 

只看楼主 倒序阅读 楼主  发表于: 2021-12-17
程序是一个读串口数据,在界面显示。采用了多线程,子线程读取串口数据后发送给主线程,主线程进行显示。
connect(&serial_1, &QSerialPort::readyRead,this, &MainWindow::startTimer); ///主线程收到readyRead信号后,启动定时器延时300ms,确保接收数据完整 connect(qtime, SIGNAL(timeout()),serialWorker, SLOT(doDataReciveWork())) //延时后,子线程doDataReciveWork()函数调用串口readAll函数读取缓冲数据connect(serialWorker,&SerialWorker::sendResultToGui,this,handleResults); 子线程读取缓冲完整数据后发送信号,主线程收到数据后,进行解析,在GUI上显示程序连续跑了一星期,突然崩溃。定位到ui->textEdit->setText(qstring);崩溃。ui->textEdit->setText(qstring);是在主线程GUI线程中调用的。
离线圣域天子

只看该作者 1楼 发表于: 2021-12-17
多半是 textEdit 放在的窗口(或更上层的)被 delete 掉了造成的,
快速回复
限100 字节
 
上一个 下一个