タイマーイベント
1秒ごとや500ミリ秒ごとなど一定間隔でイベントを発生させたい場合、QObjectのstartTimerを使います。
例えば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 };
QTimerEventのtimerIdから現在実行中のタイマーIDが取得できます。
startTimeを呼び出した後にタイマーを止めたい場合は次のようにkillTimer関数にタイマーIDを渡せばOKです。
killTimer(myTimerId);
以上、タイマーイベントについてでした。では、また!
© Kaz