アプリケーションが呼び出さQTimer::start()
れると、すぐに開始されますか、それとも現在のイベントが処理された後に開始されますか? timeout()
つまり、スロット内で長時間処理する場合は、時間補正付きの単発タイマーを使用する必要がありますか?
1 に答える
2
確実に答えるには、Qt 内のプラットフォーム固有のコードを検査する必要があります。これは、これが依存すべきものではないことを示す良い兆候です。さらに、QTimer
精度に関してはあまり約束されていません。
タイマーは、指定されたタイムアウト値よりも早くタイムアウトすることはなく、指定された正確な値でタイムアウトすることは保証されません。多くの場合、システム タイマーの精度に応じて一定時間遅れてタイムアウトになることがあります。
タイマーの精度は、基盤となるオペレーティング システムとハードウェアによって異なります。ほとんどのプラットフォームは 1 ミリ秒の分解能をサポートしていますが、現実世界の多くの状況では、タイマーの精度はこの分解能と同じではありません。
Qt が要求された数のタイマー クリックを配信できない場合、一部を黙って破棄します。
タイムアウト シグナル間の経過時間を正確に知る必要がある場合は、QTimer
を と組み合わせて使用しますQElapsedTimer
。
于 2013-11-05T07:38:47.773 に答える