永发信息网

QT 如何实现记录运行时间

答案:2  悬赏:70  手机版
解决时间 2021-11-12 11:02
QT 如何实现记录运行时间
最佳答案
用QTimer或者QBasicTimer
QTimer主要就是为计时而设计,QTimer类使用起来也很简单。举个小例子
假设构造函数有如下代码
QTimer* timer = new QTimer(this);
timer->setInterval(1000); //1000ms == 1s
connect(timer,SIGNAL(timeout()),this,SLOT(display()));
对应的槽函数display定义如下
void MainWindow::display()
{
static int count = 0;
//增加时间计数
count++;
//显示当前的时间计数
label->setText(QString::number(count));
}
上面的代码就已经完成了你的要求。每间隔1秒,count就会加1,也就是说label上显示的数字为当前程序运行了多少秒。

QBasicTimer属于轻量级的计时类,它不继承自QObject,所以它不能给你提供信号和槽。
QBasicTimer的用法如下:
假设你头文件有如下定义
protected:
void timerEvent(QTimerEvent *);

private:
QBasicTimer timer;
构造函数有如下调用
timer.start(1000,this);
最后重新实现的timerEvent函数如下
void MainWindow::timerEvent(QTimerEvent *event)
{
static int count = 0;
if (event->timerId() == timer.timerId()) {
//增加时间计数
count++;
//显示当前的时间计数
label->setText(QString::number(count));
} else {
QWidget::timerEvent(event);
}
}
上面两种方式都可以实现你的要求,相比之下QBasicTimer更适合在嵌入式设备上进行使用。
全部回答
如果精度在10ms以上可以直接用QTime类的start()函数和elapsed () 函数,然后再用QTimer更新label就可以了,用repaint()更新比用update()更新要更实时些。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
串口的公头和母头有什么区别,收发数据的引脚
求2011年高考山东卷英语阅读理解B C的翻译
男48岁了为什么突然心情特别急躁
天谕画面怎么设置又清晰效果更佳
这个方程怎么解?
5679怎么拼24
Excel 求助存款计算公式
前台图形展现大数据量 100万数据 使用哪个技
本田飞行员pilot在美国上市了吗
一看四季财运通是什么意思
仙剑4中碗丘山怎样走?
我一直想问,我们定远人,是属于南方还是北方
韩国商标在中国可以贴牌使用吗
联想x310能改装吗,玩游戏换显卡和CPU,
建筑中,独立基础DJj-3 600/200 是什么意
推荐资讯
肯德基为什么量越来越少,鸡肉里面掺杂的越来
如何通过跳绳来健身?
冬天刚买一天的长茄子为什么坏了,买的时候真
领略到遗憾,从失误中吸取教训,这句话通顺吗?
晨光学校地址在哪,我要去那里办事,
红梅叶子发黄怎么办
MOV格式的视频剪切用什么软件?
有谁清楚PP-R管道的价格是多少啊?
南京伯仕达职业技能培训有限公司怎么样?
江西师范大学同等学力申硕在哪里报名?要到什
农村信用社atm(华天大厦斜对面)地址在哪,我
开宝马3.5系都是穷人吗。
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?