什么时候调用Qt插槽?

时间:2013-09-20 04:28:13

标签: c++ qt signals-slots

例如,我有一个功能

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

    do_2();
    emit signal_2();

    do_3();
}

signal_1slot_1之间存在联系;在signal_2slot_2之间。 slot_1slot_2何时被调用?一些答案选项:

  1. 欢乐回归后,请在slot_1;
  2. 之前致电slot_2slot_1之后调用
  3. do_1,之后调用slot_2 do_2
  4. 或其他人。

2 个答案:

答案 0 :(得分:6)

对于直接连接(默认情况下不从不同的线程连接)

立即调用插槽,因此结果应为:

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

的说明

答案 1 :(得分:0)

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

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