又写bug呢 2022-07-30 11:35
浏览 60
已结题

QT子线程通过循环向主线程发送打印的信息,为什么主线程最后才集中的打印,而不是每循环一次打印一次呢?

第一次使用QT,用QT写页面置换算法时,我想的是子线程每次循环向主线程发送打印的信息,主线程将信息打印出来,但是经过测试发现,主线程都是在子线程循环完毕后,才将消息集中的打印出来,而不是每经过一次循环发送消息打印一次,是什么原因造成的啊,子线程和主线程是通过信号槽发送信号的
测试结果如下图

img

  • 写回答

1条回答 默认 最新

  • 又写bug呢 2022-07-30 15:45
    关注

    补充:我知道了,在connect函数里,第五个参数默认为Qt::AutoConnection ,如果接收者和发送者不在同一个线程,会自动使用Qt::QueuedConnection,而这个类型,在发送信号后,槽函数不会立刻被调用,等到接收者当前函数执行完,进入事件循环之后,槽函数才会被调用。将第五个参数改为Qt::BlockingQueuedConnection就可以解决,这个类型发送者在发送完信号后,线程会阻塞,等待槽函数执行完毕。

    评论

报告相同问题?

问题事件

  • 系统已结题 8月7日
  • 创建了问题 7月30日

悬赏问题

  • ¥100 复现论文:matlab仿真代码编写
  • ¥15 esp32驱动GC9A01循环播放视频
  • ¥15 惠普360g9的最新bios
  • ¥30 这个功能用什么软件发合适?
  • ¥60 微信小程序,取消订单,偶尔订单没有改变状态
  • ¥15 用pytorch实现PPO算法
  • ¥15 关于调制信号的星座图?
  • ¥30 前端传参时,后端接收不到参数
  • ¥15 这是有什么问题吗,我检查许可证了但是显示有呢
  • ¥15 机器学习预测遇到的目标函数问题