【问题标题】:Two different slots for the same signal同一信号的两个不同插槽
【发布时间】:2011-11-25 01:50:46
【问题描述】:

当 m_serverClientControl 在其线程上发出 finishedRunning() 时,我如何知道哪个插槽在主线程中首先/最后执行?在这种情况下,插槽如何排队?我对 Qt 如何将插槽事件放在线程事件队列上感到困惑。我已经阅读了文档,但我仍然有点困惑。

connect( m_serverClientControl, SIGNAL( finishedRunning() ), m_serverClientControl, SLOT( deleteLater() ) );
connect( m_serverClientControl, SIGNAL( finishedRunning() ), this, SLOT( finishedRunningEmited() ) )

【问题讨论】:

    标签: multithreading qt signals-slots


    【解决方案1】:

    来自 Qt 4.7 文档:

    如果多个插槽连接到一个信号,插槽将 一个接一个地执行,按照它们连接的顺序, 当信号发出时。

    http://doc.qt.io/archives/qt-4.7/signalsandslots.html#signals

    所以在你的情况下,finishedRunningEmited() 应该在 deleteLater() 之后调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      • 1970-01-01
      • 2012-07-04
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多