QT 如何实现记录运行时间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT 如何实现记录运行时间相关的知识,希望对你有一定的参考价值。

我想要的是一个在QT中可以实现程序运行时间的函数,当前时间和动态时间运行我都有,就是这个不好实现,如何用一个Qlabel输出这个程序运行的时间,我刚开始的想法是动态运行的时间减去启动时的时间就好了,但是,没有实现,希望高手能解决,

用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更适合在嵌入式设备上进行使用。
参考技术A 如果精度在10ms以上可以直接用QTime类的start()函数和elapsed () 函数,然后再用QTimer更新label就可以了,用repaint()更新比用update()更新要更实时些。

使用 Qt 安装程序框架脚本记录控制台输出

【中文标题】使用 Qt 安装程序框架脚本记录控制台输出【英文标题】:Logging console output using Qt Installer Framework scripting 【发布时间】:2020-01-07 01:29:19 【问题描述】:

我通过组件/控制器脚本向我的安装程序添加了一些 console.log("xxxxxx")。

即。

function Controller()

    console.log("OS: " + systemInfo.productType);

如何在安装程序运行期间查看控制台日志?

【问题讨论】:

【参考方案1】:

不确定您是否可以在安装过程中看到日志。但在“成功”安装后,TargetDir 将包含一个名为 InstallationLog.txt 的文件,其中包含安装过程中的所有 console.log 行。

编辑:要实时查看它,请像 @CherryDT 在他的评论中指出的那样:从命令行运行安装程序并提供 -v 参数(fx my_installer.exe -v)。

【讨论】:

从终端使用-v 运行安装程序时应该可以“实时”看到日志。

以上是关于QT 如何实现记录运行时间的主要内容,如果未能解决你的问题,请参考以下文章

八QT实现计时器-从设计到打包运行

Qt - 如何在不显式实现线程的情况下同时运行两个插槽

如何杀死并重新运行qt中的主进程?

使用 Qt 运行日志流送时 Python 崩溃

使用 Qt 运行日志流送时 Python 崩溃

如何在 C++ 和 Qt 中使用在运行时加载的库