读书人

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

发布时间: 2012-02-08 19:52:21 作者: rapoo

QT 槽函数 单or多线程处理 疑问?
我想问下:
QT的槽函数是多线程的还是单线程的?
比如,同时发送两个信号,槽函数是并行处理两个,还是串行处理?


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

[解决办法]

探讨

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

[解决办法]
“QT的槽函数是多线程的还是单线程的?”

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

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

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

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

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

读书人网 >QT开发

热点推荐