QTimer太让人失望了,一秒触发一次事件都不准确。。

本文探讨了使用QTimer模拟数据生成时遇到的精度问题,并通过测试代码验证了并非每1秒都能准确触发一次事件的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 今天做项目中,我用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

转载于:https://www.cnblogs.com/dragonsuc/p/4276996.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值