被广告菌警告维护了

Qt系列信号槽与线程池问题

代码 egshuai 986次浏览 5个评论

先说信号槽:

Qt系列的编程在有些时候如果想让不确定的一堆程序结果规范有序地输出,那么使用信号槽是一个很好的解决方法,我们只需要在类中定义信号函数和槽函数,并且在槽函数中编写接收处理的代码就行。

然后是线程池:

线程池的使用方法也不说了,但是如何将线程池与信号槽结合起来呢?

之前我在网上逛了很长时间,饶了很多圈子也没找到解决方案,但是最终我还是解决了,方法就是在使用线程池时将使用线程池的类本身传到线程池函数中。这就意味着除了一些你自己定义的传值参数外还要将外部的类本身传到里面。

这样以来线程池中的每个任务就能使用传进来的外部类emit->发送结果到信号函数了,然后Qt的机制就是将信号函数接收到的结果排列并发送到槽函数进行处理,这样做是可行的。注意这里线程池中的任务如果直接调用槽函数去处理结果的话,有时候也能处理,此事程序会蹦出一堆错误窗口,因为槽函数会冲突(我是这样理解的)。

总之我的理解就是这样…


Qt系列信号槽与线程池问题 未经博主同意不允许转载
喜欢 (2)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(5)个小伙伴在吐槽
  1. 窝记得qt的信号槽不是线程安全的
    静静2016-12-07 20:58 回复 未知操作系统 | Chrome 53.0.2785.143
    • 不知道,窝是刚入坑Qt不久 话说你哪位啊 :lol:
      egshuai2016-12-07 21:00 回复 Windows 7 | Firefox 50.0
      • 乃猜
        静静2016-12-07 21:01 回复 未知操作系统 | Chrome 53.0.2785.143
        • 不造.. :?:
          egshuai2016-12-07 21:03 回复 Windows 7 | Firefox 50.0
          • JIngJingHack 目测说了乃也不认识~
            静静2016-12-07 21:05 回复 未知操作系统 | Chrome 53.0.2785.143