4

例如,我有一个函数

void A::fun()
{
    do_1();
    emit signal_1();

    do_2();
    emit signal_2();

    do_3();
}

signal_1和之间有联系slot_1signal_2和之间slot_2。什么时候调用slot_1和?slot_2一些答案选项:

  1. 乐趣归来之后,调用slot_1之前slot_2
  2. slot_1被调用do_1后被slot_2调用 do_2

或其他。

4

2 回答 2

7

对于直接连接(不从不同线程连接时默认)

插槽被立即调用,所以结果应该是:

do_1
slot_1
do_2
slot_2
do_3

对于从同一个线程调用的排队连接(需要手动设置)

函数的执行必须结束,然后主循环才能调用槽

do_1 
do_2 
do_3 
slot_1    
slot_2 

对于从不同线程调用的排队连接

由于线程问题,它更复杂。结果可能类似于第一个或第二个示例(或组合)。你无法保证它会是什么调用顺序!

do_1 
slot_1    
do_2 
do_3 
slot_2 

在这里你可以看到Qt::ConnectionType的描述

于 2013-09-20T07:50:35.230 回答
0

此链接可能有助于更简单的理解

http://doc.qt.io/qt-5/signalsandslots.html

于 2013-09-20T08:09:41.057 回答