Qt 信号槽:槽函数到底在哪个线程执行
“在工作线程里 emit 一下,槽函数就会在工作线程跑吧?”
不一定。Qt 里槽函数在哪个线程执行,不由信号定义在哪个类里决定,而由三件事共同决定:连接类型、发射信号时的当前线程、接收者对象所在线程。搞错这一点,轻则界面卡顿,重则随机崩溃。
AutoConnection 在发射时判断
connect 默认使用 Qt::AutoConnection。它的规则很短:
[ CATEGORY ]
qt 分类下共有 1 篇编程实战文章,涵盖常见问题排查、代码示例与实践经验。
“在工作线程里 emit 一下,槽函数就会在工作线程跑吧?”
不一定。Qt 里槽函数在哪个线程执行,不由信号定义在哪个类里决定,而由三件事共同决定:连接类型、发射信号时的当前线程、接收者对象所在线程。搞错这一点,轻则界面卡顿,重则随机崩溃。
connect 默认使用 Qt::AutoConnection。它的规则很短: