在我的代码中,我发出一个信号(mySignal),我想在继续之前等待连接槽(mySlot)的执行结束:
emit mySignal();
// Wait for the end of mySlot execution...
// Some code that has to be executed only after the end of mySlot execution...
有办法吗?
答案 0 :(得分:6)
如果发件人和收件人在同一个帖子中使用Qt::DirectConnection
,如果他们在2个不同的帖子中,则使用Qt::BlockingQueuedConnection
。
ClassA a;
ClassB b;
ClassC c;
c.moveToThread(aThread);
QObject::connect(&a, &ClassA::signal, &b, &ClassB::slot, Qt::DirectConnection);
QObject::connect(&a, &ClassA::signal, &c, &ClassC::slot, Qt::BlockingQueuedConnection);
请注意,如果符合以下条件,则必须断开/重新连接:
如果发送方和接收方位于同一线程中,则Qt::DirectConnection
是默认值(请参阅Qt :: AutoConnection)。