menu Ealodi's Blog
Qt多线程中的一些坑
56 浏览 | 2021-01-02 | 阅读时间: 约 1 分钟 | 分类: 日常 | 标签:

前几日在使用qt多线程时,需要在子线程中发送信号到主线程,再用槽函数处理,更新界面。虽然在理论上感觉是可以的,但是出现了以下错误

Error: Cannot create children for a parent that is in a different thread

原因是不同线程间信号接收引发的错误

Qt支持的几种连接方式

  1. Qt::DirectConnection
  2. Qt::QueuedConnection
  3. Qt::AutoConnection
  4. Qt::BlockingQueuedConnection
  5. Qt::UniqueConnection

解决办法:

只需要在connect的第5个参数设置为Qt::QueuedConnection

    connect(this, SIGNAL(OriginalDownOver()), this, SLOT(OriginDealDown()), Qt::QueuedConnection);

就这样的小问题困扰了我许久,特此记录一下。

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

发表评论

email
web

全部评论 (共 1 条评论)

    qq
    2021-01-28 18:28
    214087291 大佬加我一下