Два разных слота для одного и того же сигнала - PullRequest
0 голосов
/ 25 ноября 2011

Когда m_serverClientControl испускает finishRunning () в своем потоке, как я могу сказать, какой слот исполняется первым / последним в основном потоке? Как слоты ставятся в очередь в такой ситуации? Я запутался в том, как Qt помещает события слота в очередь событий потока. Я прочитал документ, но все еще немного запутался.

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

1 Ответ

1 голос
/ 25 ноября 2011

Из документации Qt 4.7:

Если несколько слотов подключены к одному сигналу, слоты будут выполняться один за другим в том порядке, в котором они были подключены, когда излучается сигнал.

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

Так что в вашем случае finishedRunningEmited() следует вызывать после deleteLater().

...