QT 如何实现记录运行时间

我想要的是一个在QT中可以实现程序运行时间的函数,当前时间和动态时间运行我都有,就是这个不好实现,如何用一个Qlabel输出这个程序运行的时间,我刚开始的想法是动态运行的... 我想要的是一个在QT中可以实现程序运行时间的函数,当前时间和动态时间运行我都有,就是这个不好实现,如何用一个Qlabel输出这个程序运行的时间,我刚开始的想法是动态运行的时间减去启动时的时间就好了,但是,没有实现,希望高手能解决, 展开
 我来答
mileelove
2012-01-11 · TA获得超过454个赞
知道小有建树答主
回答量:183
采纳率:0%
帮助的人:325万
展开全部
用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更适合在嵌入式设备上进行使用。
gaojxhust
2012-01-11 · TA获得超过114个赞
知道答主
回答量:45
采纳率:100%
帮助的人:55.2万
展开全部
如果精度在10ms以上可以直接用QTime类的start()函数和elapsed () 函数,然后再用QTimer更新label就可以了,用repaint()更新比用update()更新要更实时些。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式