イベントエンジンに大量のqtイベントがキューイングされている場合の質問です。イベントを介して信号を送信し、QTimer
スロットに別のイベントを作成しますか?timeout()
queuedConnection
1989 次
3 に答える
3
によって接続されたスロットは、シグナルが によって発信さQt::DirectConnection
れるとすぐに呼び出されます。キュー接続を使用すると、スロットを呼び出すイベントがスケジュールされ、イベント ループによって処理されます。を使用して信号を発信します。QTimer::timeout
QTimer
QTimer
timerEvent
timeout
于 2016-06-16T07:15:04.473 に答える
1
いいえ、別のスレッドで実行されていない限り、デフォルトではキュー接続ではありません。したがって、それは DirectConnection です。
一般に、イベントの連続した順序を保証したい場合は、Qt::QueuedConnection を同じスレッド内であってもタイマーなどと一緒に使用して、イベントがキューに送られ、単に処理されないようにすることをお勧めします。即時に - この動作は「割り込み」に似ているためです。
ただし、タイマー timeout() をすぐに実行したい場合は、Qt::DirectConnection を使用してください。一般的に、この接続タイプにはもっと注意する必要があると思います (他の接続の途中でトリガーできるタイマーなど)。通常のコード)。
編集
「通常のコード」とは...つまり、以下のコメントを参照してください。
于 2016-06-16T07:16:38.470 に答える