一、使用定时器加Label的操作完成:
1、在构造函数(构造函数只会经过运行一次)中添加代码段:
QTimer *t_time = new QTimer(this);//创建定时器
//定时器信号与槽函数,信号为超时触发信号,槽函数为自己编写的时间到了后要执行去做的事情。
connect(t_time, SIGNAL(timeout()), this, SLOT(TimeOutElapsedTimeChange()));
t_time->start(1000);//设置时间间隔为1s
2、槽函数编写与在.h中的定义添加:
void mainsepsiswidget::TimeOutElapsedTimeChange()
{
TimeSecond++;
if(TimeSecond==60)
{
TimeSecond=0;
TimeMinute++;
if(TimeMinute==60)
{
TimeMinute=0;
TimeHour++;
}
}
if(TimeMinute>9)
{
if(TimeSecond>9)
{
StrElapsedTime=QString("%1:%2:%3");
}
else
{
StrElapsedTime=QString("%1:%2:0%3");
}
}
else
{
if(TimeSecond>9)
{
StrElapsedTime=QString("%1:0%2:%3");
}
else
{
StrElapsedTime=QString("%1:0%2:0%3");
}
}
//将时间赋值
StrElapsedTime=StrElapsedTime.arg(TimeHour).arg(TimeMinute).arg(TimeSecond);
ui->label_2->setText(StrElapsedTime);
}
public slots:
void TimeOutElapsedTimeChange()
3、类内相关定义:
private:
int TimeSecond=0;//秒
int TimeMinute=0;//分
int TimeHour=0;//小时
QString StrElapsedTime="00:00:00";
4、运行效果:
二、还未尝试成功:
获取当前时间减去之前的时间,达到时间获取精度的提升,来显示经过了一秒钟的效果,然后再显示上去。
QDateTime begin_time = QDateTime::currentDateTime(); //获取或设置时间
QDateTime end_time = QDateTime::currentDateTime(); //获取或设置时间
QTime m_time;
m_time.setHMS(0, 0, 0, 0); //初始化数据,时 分 秒 毫秒
m_time.addSecs(begin_time.secsTo(end_time)).toString("hh:mm:ss");//计算时间差(秒),将时间差加入m_time,格式化输出