QT 中定時器兩種使用方法

2021-10-01 12:28:53 字數 2378 閱讀 7524

qt中定時器的使用有兩種方法,一種是使用qobject類提供的定時器,還有一種就是使用qtimer類。

其精確度一般依賴於作業系統和硬體,但一般支援20ms。下面將分別介紹兩種方法來使用定時器。

方法一:qobject中的定時器的使用,需要用到三個函式

1、   int qobject::starttimer ( int interval ) ;

這個是開啟乙個定時器的函式,他的引數interval是毫秒級別。當開啟成功後會返回這個定時器的id, 並且每隔interval 時間後會進入timerevent 函式。直到定時器被殺死。

2、 void qobject::timerevent ( qtimerevent * event ); 

當定時器超時後,會進入該事件timerevent函式,需要重寫timerevent函式,在函式中通過判斷event->timerid()來確定定時器,然後執行某個定時器的超時函式。

3、 void qobject::killtimer ( int id );

通過從starttimer返回的id傳入killtimer 函式中殺死定時器,結束定時器進入超時處理。

以下是qobject中的定時器具體使用簡單例子:

#define _mytimer_h

#include

class mytimer : public qobject

;

#endif //_mytimer_h

#include "mytimer.h"

#include

#include

#define timer_timeout (5*1000)

mytimer::mytimer(qobject *parent)

:qobject(parent)

mytimer::~mytimer()

void mytimer::timerevent(qtimerevent *event)

}

void mytimer::handletimeout()

方法二:使用qtimer定時器類

1、  首先建立乙個定時器類的物件

qtimer *timer = new qtimer(this);

2、  timer 超時後會發出timeout()訊號,所以在建立好定時器物件後給其建立訊號與槽

connect(timer, signal(timeout()), this, slot(ontimeout()));

3、  在需要開啟定時器的地方呼叫void qtimer::start ( int msec );

這個start函式引數也是毫秒級別;

timer->start(msec );

4、 在自己的超時槽函式裡面做超時處理。

以下是qtimer定時器類具體使用簡單例子:

#ifndef _mytimer_h

#define _mytimer_h

#include

class qtimer;

class mytimer : public qobject

;

#endif //_mytimer_h

#include "mytimer.h"

#include

#include

#define timer_timeout (5*1000)

mytimer::mytimer(qobject *parent)

:qobject(parent)

mytimer::~mytimer()

void mytimer::handletimeout()

}

QT中定時器的使用方法

qt中定時器的使用方法 1 過載timerevent qtimerevent 函式,然後再在類的建構函式中設定時間間隔 starttimer 50 單位為毫秒 2 在類的建構函式中設定如下 qtimer timer new qtimer this connect timer,signal timeo...

QT中定時器的使用方法

qt中定時器的使用方法 1 過載timerevent qtimerevent 函式,然後再在類的建構函式中設定時間間隔 starttimer 50 單位為毫秒 2 在類的建構函式中設定如下 qtimer timer new qtimer this connect timer,signal timeo...

QT中定時器的使用方法

qt中定時器的使用方法 方法1 過載timerevent qtimerevent 函式,然後再在類的建構函式中呼叫starttimer 設定時間間隔,starttimer 50 單位為毫秒 即 每隔50ms就會執行一次timerevent 函式。方法2 利用訊號槽機制 在類的建構函式中設定如下 qt...