今天做專案中,我用QTimer來模擬資料生成,在另外的裝置上接受。另外裝置上有時1秒讀不到資料,查詢原因很久,終於發現是QTimer的問題。
測試程式碼如下 有興趣同學可以自己試試。
t = new QTimer(this); t->start(1000); connect(t,SIGNAL(timeout()),this,SLOT(on_showtime()));
void qtdemo::on_showtime() { static int pre=-1; QDateTime dt = QDateTime::currentDateTime(); if(pre==-1) { } else if(pre==59) { if(dt.time().second()!=0) { qDebug()<<"pre="<<pre; qDebug()<<"now "<<dt.time().second(); } } else { if( (pre+1)!=dt.time().second()) { qDebug()<<"pre="<<pre; qDebug()<<"now "<<dt.time().second(); } } pre=dt.time().second(); }
執行後顯示:
說明沒有1秒觸發1次事件。。。
另參考:http://qtcn.org/bbs/simple/?t57669.html