如何知道Qt在哪个线程中执行槽?

qwe*_*qwe 4 c++ qt multithreading

我使用Qt,我需要在主线程中执行一些代码。我意识到成功地使用了信号和槽。

我的问题是,即使它正在工作:什么定义了在哪个线程中执行槽作为信号发射的直接结果?

是在执行 connect() 函数的线程内部还是什么?

Nic*_*aus 6

这取决于你如何设置你的connection.

  • 如果您使用Qt::DirectConnection,槽将立即在信号线程中执行,绕过任何事件循环。

  • 如果您使用 a Qt::QueuedConnection,它将在接收对象线程中的接收对象事件循环中执行。

  • 如果不指定连接类型,则默认为,如果两者具有不同的线程关联性,Qt::AutoConnection则默认为。Qt::QueuedConnectionQObjects