QT中的插槽排队

时间:2015-02-28 23:25:54

标签: c++ qt

似乎无法在文档中找到答案,但我并不完全确定我是在寻找合适的地方。我有一个连接到插槽的信号,例如我的QIODevice connect(port, SIGNAL(readyRead()), SLOT(handleReadyRead()));如果信号readyRead()快速连续发出两次,比如在插槽完成处理之前,将同时调用插槽或排队并一个接一个地跑?

1 个答案:

答案 0 :(得分:1)

它永远不会在新线程中调用插槽。但是,如果您已经有多个线程,则可以并行执行插槽。何时调用插槽取决于连接类型,您可以在connect调用中指定。

QObject 位于线程中。默认情况下,它是创建它的那个,但您可以在线程之间移动对象。

默认连接类型的工作方式如下:

  • 如果接收方位于同一个线程中,则会在同一个线程中立即调用slot。
  • 否则当接收者的线程返回事件循环时将调用slot。它在接收器的线程中执行。

此处有更多信息:http://doc.qt.io/qt-5/qt.html#ConnectionType-enum