在我的代码中,我发出一个信号(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...
Run Code Online (Sandbox Code Playgroud)
有办法吗?
如果发送方和接收方都在同一个线程中使用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);
Run Code Online (Sandbox Code Playgroud)
请注意,如果出现以下情况,您必须断开/重新连接:
也Qt::DirectConnection就是,如果发送者和接收者是在同一个线程默认的(见的Qt ::自动连接).
| 归档时间: |
|
| 查看次数: |
2224 次 |
| 最近记录: |