QTimer太讓人失望了,一秒觸發一次事件都不準確。。

長風破浪發表於2015-02-06

 今天做專案中,我用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

相關文章