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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (12)

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

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

假设一个B类有两个插槽,一个连接到first_signal另一个second_signal保证连接到的插槽first_signal总是在插槽之前被处理second_signal

提问于
用户回答回答于

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

从Qt帮助系统:

发出信号时,连接到它的插槽通常会立即执行,就像正常的函数调用一样。发生这种情况时,信号和插槽机制完全独立于任何GUI事件循环。 一旦所有插槽已经返回,在发出语句之后执行代码。使用排队连接时情况稍有不同; 在这种情况下,emit关键字后面的代码将立即继续,并且插槽将在稍后执行。

你可以更改默认的连接类型中的任何枚举的Qt :: ConnectionType的QObject ::连接方法。

扫码关注云+社区