タイマーイベント

1秒ごとや500ミリ秒ごとなど一定間隔でイベントを発生させたい場合、QObjectstartTimerを使います。

例えば500ミリ秒ごとに呼び出したければこうします。

int id = startTimer(500);

startTimerタイマーの識別IDを返してくるので、それを利用し、どのタイマーが実行されたかを知ることができます。

では、タイマーイベントをどう受け取るかというと初めにQObjectを継承したクラスでtimerEventをオーバーライドします。

class MyObj : public QObject
{
public:
    MyObj(QObject * parent = 0) : QObject(parent)
    {
        myTimerId = startTimer(500);
            ///500ミリ秒間隔のタイマーをスタート
    }

protected:
    void timerEvent(QTimerEvent * e)
    {
        if(e.timerId() == myTimerId){
            ///処理...
        }
    }
    
private:
    int myTimerId;
        ///タイマーID
};

QTimerEventtimerIdから現在実行中のタイマーIDが取得できます。

startTimeを呼び出した後にタイマーを止めたい場合は次のようにkillTimer関数にタイマーIDを渡せばOKです。

killTimer(myTimerId);

以上、タイマーイベントについてでした。では、また!

関連項目
プライバシーポリシー