Qtイベント:タイマーイベント

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));//分钟
    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.タイマーを停止します

void QObject :: killTimer(int id)

おすすめ

転載: blog.csdn.net/kenfan1647/article/details/114784386