イベントエンジンでキューに入れられたqtイベントがたくさんある場合は、私は尋ねています。 QTimer
はtimeout()
イベントを介して信号を発信し、queuedConnection
とスロットは別のイベントを作成しますか?QTimerタイムアウトスロットと直接接続またはキュー接続によるスロットの呼び出しの違いは何ですか?
3
A
答えて
2
Qt::DirectConnection
で接続されたスロットは、信号がQTimer
によって放出されるとすぐに呼び出されます。キューに入れられた接続を使用すると、スロットを呼び出すイベントがスケジュールされ、イベントループによって処理されます。 QTimer
はtimerEvent
〜emit the timeout
signalを使用します。
0
QTimerがタイムアウトすると、このQTimerの信号をスロットに結合するすべての信号 - スロット接続が、このスロットを正確に1回起動します。
1
いいえいいえ、別のスレッドで実行されていない限り、デフォルトではキューに入れられません。そのため、DirectConnectionです。
通常、イベントの順番を保証したいのであれば、イベントがキューに入るように同じスレッド内であってもタイマーのようなものでQt :: QueuedConnectionを使う方がよいこの行動はいくつかの "中断"のようなものであるため、ただimmidiatleyに作用するだけではありません。
しかし、実際にタイマーのタイムアウト()をすぐに有効にしたい場合は、Qt :: DirectConnectionを使用してください。この接続タイプにもっと注意する必要があると感じています他の通常のコードの真中)。タイマーは、通常のコードの途中でトリガすることができません
関連する問題
- 1. QTimerがタイムアウトスロットを呼び出さない
- 2. SQL接続とOLEDB接続の違い
- 3. ソケット接続とXMPP接続の違い
- 4. APIまたはAWSに直接接続しますか?
- 5. 直接TCP \ IP接続には何が必要ですか?
- 6. プロトタイプメソッドを直接インスタンスメソッドと呼び出す方法の違いは?
- 7. Sidekiq接続。 Redisへの接続とは何ですか?
- 8. httpリクエストごとのダイレクトdb接続と接続プーリング - 違いは
- 9. 直接P2P接続
- 10. 未接続の接続およびコンテンツマネージャー
- 11. ソケット接続とtcp接続の間に違いはありますか?
- 12. 信号とスロットの接続でアスタリスクとは何ですか? PythonのはQtで
- 13. html5とmysqlの間の直接接続
- 14. MySQLはどの接続に接続していますか?
- 15. 接続プールとmax_connectionsの違いは何ですか?
- 16. 「フィードフォワードネットワーク」と「完全接続ネットワーク」の違いは何ですか?
- 17. URL接続とソケットクラスの違いは何ですか?
- 18. ハイブリッド接続と構内データゲートウェイの違いは何ですか?
- 19. 引き出しをブラウザドライバに直接接続するときに使用するプロトコルは何ですか?
- 20. IdentityServer4はFacebookの認証に直接接続します
- 21. 呼び出す直接
- 22. 接続は、私は、リモートRackspaceのDB PHPに接続しようとしているDB接続
- 23. officejs直接データベース接続
- 24. 直接deepstreamノードを接続
- 25. DBCP接続プールでのブロック(オープンおよびクローズ接続)。 OpenEJBのデータベース接続プーリングはプラガブルですか?
- 26. エラーコード0xC0202009で接続マネージャー<Excel接続マネージャー>へのAcquireConnectionメソッド呼び出しに失敗しました
- 27. Webサービス呼び出しによるDB接続のセキュリティコンテキスト
- 28. メモリ間接呼び出しとレジスタ間接呼び出しの相違点
- 29. ServerSocketタイムアウトとキュー接続
:「通常のコード」私が意味することで
編集
...よく、以下のコメントを参照。タイマーはイベントによってトリガーされます。そのため、イベントループが必要です。ドキュメントの状態:['QTimerを動作させるには、アプリケーションにイベントループが必要です。つまりQCoreApplication :: exec()をどこかで呼び出す必要があります。タイマーイベントは、イベントループが実行されている間にのみ配信されます。]](http://doc.qt.io/qt-5/timers.html)。 – thuga
私はQtプログラムで実行していると仮定して "正常"を意味します。したがって、exec()は実行されますが、申し訳ありませんがそれを仮定するべきではありません: –
"正常なコードの真中に"という意味はまだ QCoreApplicationは、関数の実行中に、 というイベントを実行するための空き時間を取得し、 ではなく時間を取得しますか? –