4

イベントエンジンに大量のqtイベントがキューイングされている場合の質問です。イベントを介して信号を送信し、QTimerスロットに別のイベントを作成しますか?timeout()queuedConnection

4

3 に答える 3

3

によって接続されたスロットは、シグナルが によって発信さQt::DirectConnectionれるとすぐに呼び出されます。キュー接続を使用すると、スロットを呼び出すイベントがスケジュールされ、イベント ループによって処理されます。を使用し信号を発信します。QTimer::timeoutQTimerQTimertimerEventtimeout

于 2016-06-16T07:15:04.473 に答える
1

いいえ、別のスレッドで実行されていない限り、デフォルトではキュー接続ではありません。したがって、それは DirectConnection です。

一般に、イベントの連続した順序を保証したい場合は、Qt::QueuedConnection を同じスレッド内であってもタイマーなどと一緒に使用して、イベントがキューに送られ、単に処理されないようにすることをお勧めします。即時に - この動作は「割り込み」に似ているためです。

ただし、タイマー timeout() をすぐに実行したい場合は、Qt::DirectConnection を使用してください。一般的に、この接続タイプにはもっと注意する必要があると思います (他の接続の途中でトリガーできるタイマーなど)。通常のコード)。

編集

「通常のコード」とは...つまり、以下のコメントを参照してください。

于 2016-06-16T07:16:38.470 に答える