当前位置: 代码迷 >> QT开发 >> QT 槽函数 单or多线程处理 疑问?解决思路
  详细解决方案

QT 槽函数 单or多线程处理 疑问?解决思路

热度:597   发布时间:2016-04-25 05:07:34.0
QT 槽函数 单or多线程处理 疑问?
我想问下:
QT的槽函数是多线程的还是单线程的?
比如,同时发送两个信号,槽函数是并行处理两个,还是串行处理?


另外:都说只有在主线程中能修改控件,比如(ListWidget)
如果我在MaiFrm中写一个槽函数,内容是修改ListWidget中的内容.
这时,通过额外起线程,往MainFrm的槽函数发送信号,这样也能修改内容,
但这样算是在主线程中修改吗?

------解决方案--------------------
探讨

我做了个实验室,用
QMessageBox box;
box.exec;
然后同时发两个信号
结果一下弹出两个box (exec没有阻塞槽函数处理)

------解决方案--------------------
“QT的槽函数是多线程的还是单线程的?”

如果是UI相关的,那必然是在主线程中被顺序执行。

但关于这个问题,我想做一些补充。

Qt的信号是可以跨线程投递的,槽函数在哪个线程被执行,这取决于信号和槽的连接方式。看一下connect的参数便可知道。

因此一个非UI的槽函数,完全可以在两个次线程中被并行执行。

楼主需要记住一句话,“事件循环必然是串行的,但可以有多个事件循环在并行工作”这就是Qt,呵呵。

  相关解决方案