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()
}
列舉的2種用法
建立列舉類,列舉一般用在可窮舉的場景,列舉的描述,除了最後乙個是分號,其他的都是逗號 使用列舉類 如果不使用列舉那就用常量實現,但是列舉更好一點 例private final static int spring 1 private final static int summer 2 private ...
hbm2dll的4種用法
hibernate.cfg.xml中配置 name hbm2ddl.auto createproperty 他會自動根據配置新增表內容,每次create表資料都會丟失 name hbm2dll.auto validateproperty 驗證表字段是否跟配置檔案或者annotation定義類是否符合...
的7種用法
jquery物件是乙個類陣列的物件,含有連續的整形屬性以及一系列的jquery方法。它把所有的操作都包裝在乙個jquery 函式中,形成了統一 也是惟一 的操作入口。其中我們用的非常頻繁的乙個函式是 或者說是jquery 當我們呼叫他的時候會根據傳入的引數的不同而達到不同的效果。簡要的說是 接收乙個...