2009-08-07 9 views

答えて

41

:いいえ、順序はthe documentation hereに見られるように定義されていない:

いくつかのスロットは、1つの信号に接続されている場合、スロットは、次々に実行され、信号が発せられたときに、任意の順序で送信する。

編集:バージョン4.6以降は、これはもう真実ではありません。これで、スロットは接続された順に実行されます。 the current documentationの関連段落:

いくつかのスロットは、一つの信号に接続されている場合、信号が

+1

@Hossein QTバージョン4.6までの私の答えは正しいです。質問の日付(と私の答え)を見ると、質問が出されたときに正解であったことがわかります。ヤロスラフの答えは1年後に掲載されたことに注意してください。 – sepp2k

+1

申し訳ありません、私はあなたの投稿を過小評価するつもりはありませんでした。この質問は私がやったGoogle検索の最初の結果として現れたので、読者の混乱を招くことはもうありませんでした。 – Hossein

+0

異なるスレッドでこれを実行するには、キュー接続を使用する必要があります。ただ言って。 – smsware

2

に放出される場合、スロットは、それらが接続されているために、次々に実行されますこれまでの注文は未定義ですが、すべてのQtバージョンでconnect()の注文がありましたが、Qt::QueuedConnectionが使用されている場合を除き、emitが返ってきたときにスロットがすべて実行されたことが保証されていません。しかし、依頼に依拠することはやはり推奨されていません。

9

Qtのドキュメントによれば、いくつかのスロットは、1つの 信号に接続されている場合

、スロットは信号 があるときに、接続されている ために、次々 を実行します放出される。それは信号/スロット接続の精神の両方を破り、あなたがしなければ望ましくない行動のための広いオープンあなたを離れるとスロットが実行されますどのような順序に依存

http://qt-project.org/doc/qt-4.8/signalsandslots.html

+2

間違いありません。 Qtのバージョンによって異なります。 –

0

は、悪い、悪い考えです任意の種類のプログラムによる信号接続&スロット。

関連する問題