问:事件是否按顺序处理?

时间:2009-11-14 02:24:00

标签: qt signals-slots

如果我有一个A类,其功能之一是:

void A::func()
{
    emit first_signal();
    emit second_signal();
}

假设B类有2个插槽,一个连接到first_signal,另一个连接到second_signal,是保证连接到{{ 1}}将始终在<{strong> first_signal广告位之前进行处理?

1 个答案:

答案 0 :(得分:15)

如果你在信号和插槽之间使用直接连接类型(Qt :: DirectConnection),那么答案是肯定的。

来自Qt帮助系统:

  

发出信号时,插槽   连接到它通常执行   马上就像正常一样   函数调用。当这种情况发生时,   信号和插槽机制完全是   独立于任何GUI事件循环。   执行下面的代码   所有发生声明都会发生   插槽已经退回。情况如此   使用排队时略有不同   连接;在这种情况下,代码   跟随emit关键字将   立即继续,并插槽   将在稍后执行。

您可以在enum Qt::ConnectionType方法中将默认连接类型更改为QObject::connect中的任何一种。