qtのタイマーにQTimerを使用することに加えて、QObjectを継承するすべてのオブジェクトはタイマーイベントを使用できます。
1.タイマーをオンにします。
int QObject :: startTimer(int interval、Qt :: TimerType timerType = Qt :: CoarseTimer)
戻り値はタイマーIDです。
パラメータ1は時間間隔であり、いくつかの方法で記述できます。
- 最も一般的に使用されるのは、数値を直接書き込むことです。単位はミリ秒です。
- 標準ライブラリ時間:
using namespace std::chrono;
startTimer(milliseconds(50));//毫秒
startTimer(seconds(1));//秒
startTimer(minutes(1));//分钟
- 標準ライブラリ時間リテラル定数 c ++カスタムタイプリテラル定数
using namespace std::chrono_literals;
startTimer(100ms);
startTimer(5s);
startTimer(2min);
startTimer(1h);
パラメータ2はタイマーの精度です。
- Qt :: PreciseTimerはミリ秒の精度を維持しようとします
- Qt :: CoarseTimer CoarseTimerは、必要な間隔の5%以内で精度を維持しようとします
- Qt :: VeryCoarseTimer非常にラフなタイマーは、完全な秒の精度しか維持できません
UNIX(Linux、macOS、iOSを含む)では、QtはQt :: PreciseTimerのミリ秒の精度を維持します。Qt :: CoarseTimerの場合、間隔は5%に調整され、タイマーを、ほぼ同時に起動すると予想される他のタイマーと調整します。その目的は、ほとんどのタイマーを同時にウェイクアップすることで、CPUのウェイクアップと消費電力を削減することです。
Windowsでは、QtはWindowsマルチメディアタイマーツール(使用可能な場合)を使用してQt :: PrecisionTimerを実装し、通常のWindowsタイマーを使用してQt :: groassetimerとQt :: VeryCoarseTimerを実装します。
すべてのプラットフォームで、Qt :: VeryCoarseTimerの間隔は最も近い1秒に丸められます(たとえば、23500msの間隔は24000msに丸められ、20300msは20000msに丸められます)。
2.タイマーイベント
void timerEvent(QTimerEvent *event)
{
int id = event->timerId();
if(id == xx)
{
//do something
}
}
3.タイマーを停止します