ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Qt|QTimer动态倒计时显示距离下一次任务执行剩余的时间

2021-09-10 14:58:20  阅读:210  来源: 互联网

标签:60 baseTime Qt int timer 倒计时 QString QTimer


   用到了定时器QTimer,这里定的间隔是1s,我用lcdnumber以s为单位,动态显示了距离下一次触发timeout()信号还有多长时间。

主要思路:

  1. 多久执行一次任务,是用户输入的间隔intval
  2. 用当前时间QTime::currentTime()和baseTime之间的时间差,计算距离下一次任务的剩余时间

主要代码:

//同步时间
void on_btnGet_clicked()
{
    this->baseTime=baseTime.currentTime();//基准时间
   
    timer=new QTimer(this);
    timer->setInterval(1000);//间隔1s

    connect(timer,&QTimer::timeout,this,[=](){
     

        int temp=baseTime.secsTo(QTime::currentTime());//时间差



        if(temp>=intVal*60)//用户输入的间隔,我设置的单位是分钟,所以乘以60换算成s
        {

            on_btnGet_clicked();
            baseTime.restart();
           
        }
        else
        {
            ui->lcdNumber->display(secsToTime(intVal*60-temp));//显示剩下的时间。
        }
    });
    timer->start();
}

将s转换成时间


QString  secsToTime(int s)
{
    int h=0,m=0;
    h=s/3600;
    s%=3600;
    m=s/60;
    s%=60;

    QString str=QString::number(h)+"时:"+QString::number(m)+"分:"+QString::number(s)+"秒";
    qDebug()<<str;
    return str;

}

 

标签:60,baseTime,Qt,int,timer,倒计时,QString,QTimer
来源: https://blog.csdn.net/kllo__/article/details/120221995

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有