状況は次のとおりです。Qt:信号をあまりにも速く送信するとどうなりますか?
- バックグラウンドスレッドで1つの長期実行計算が実行されています。
- この計算は、たとえば100msecごとにGUIエレメントをリフレッシュするように信号を送信しています。
- それは100のそのような信号を送り出すとしましょう。
- 再描画するウィジェットは、再描画するのに100ミリ秒以上かかります。 1秒と言いましょう。
イベントループではどうなりますか?信号がすべて実行されるまで(つまり100秒間)、信号は「積み上げ」をしますか?イベントを「落とす」メカニズムはありますか?
+1。私は、私が提案した何ものよりも、この種の解決策が好きだと思う。ただし、計算の頻度を図面の頻度からさらに切り離して完全に切り離すことができます。最後に出力された値をキャッシュし、タイマーに基づいて再描画します。 – cgmb
最良のアプローチは本当にケースに依存します。 QTimerを使用した再描画は、再描画を常に実行する必要があり、再描画に時間がかかりすぎない場合は、簡単な解決策になります。しかし、通常、再描画がまったく必要ない場合、非常に重い再描画を必要とする変更のバーストがある場合は、私が提示した解決策がより良いかもしれません。 –
私のソリューションに問題が見つかりました。答えにもう少しテキストを追加しました。 –