Qt运行时间记录类怎么使用
发表于:2025-01-30 作者:千家信息网编辑
千家信息网最后更新 2025年01月30日,这篇文章主要介绍"Qt运行时间记录类怎么使用",在日常操作中,相信很多人在Qt运行时间记录类怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Qt运行时间记录类怎么
千家信息网最后更新 2025年01月30日Qt运行时间记录类怎么使用
这篇文章主要介绍"Qt运行时间记录类怎么使用",在日常操作中,相信很多人在Qt运行时间记录类怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Qt运行时间记录类怎么使用"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
一、前言
在早期开发的软件中,尤其是初学者入门者写的软件,软件运行久了,难免遇到意外崩溃的时候,可是大部分的运行设备可能在现场客户那,需要记住每一次从软件启动后到软件意外关闭前的运行时间,需要记录的信息包括:编号+开始时间+结束时间+已运行时间,每次完整的运行过程只产生一条记录,每次运行时间改变以后更新当前这条记录即可。这样就可以确切的了解到软件在现场的真实运行情况是否糟糕,如果没有这个记录(当然可以选择记录存储到数据库),程序又重启恢复了,也不知道到底每次运行了多久,从几点到几点。为了写的简单点,不干扰原有的数据库文件,我一般选择输出到文本文件。
主要功能:
可以启动和停止服务,在需要的时候启动。
可以指定日志文件存放目录。
可以指定时间日志输出间隔。
可以单独追加一条记录到日志文件。
日志为文本格式,清晰明了。
二、代码思路
void SaveRunTime::getDiffValue(const QDateTime &startTime, const QDateTime &endTime, int &day, int &hour, int &minute){ qint64 sec = startTime.secsTo(endTime); day = hour = minute = 0; int seconds = 0; while (sec > 0) { seconds++; if (seconds == 60) { minute++; seconds = 0; } if (minute == 60) { hour++; minute = 0; } if (hour == 24) { day++; hour = 0; } sec--; }}void SaveRunTime::initLog(){ //判断当前年份的记事本文件是否存在,不存在则新建并且写入标题 //存在则自动读取最后一行的id号 记事本文件格式内容 //幢号 开始时间 结束时间 已运行时间 //1 2016-01-01 12:33:33 2016-02-05 12:12:12 day: 0 hour: 0 minute: 0 logFile = QString("%1/%2_runtime_%3.txt").arg(path).arg(name).arg(QDate::currentDate().year()); QFile file(logFile); if (file.size() == 0) { if (file.open(QFile::WriteOnly | QFile::Text)) { QString strID = QString("%1t").arg("编号"); QString strStartTime = QString("%1tt").arg("开始时间"); QString strEndTime = QString("%1tt").arg("结束时间"); QString strRunTime = QString("%1").arg("已运行时间"); QString line = strID + strStartTime + strEndTime + strRunTime; QTextStream stream(&file); stream << line << NEWLINE; file.close(); lastID = 0; } } else { if (file.open(QFile::ReadOnly)) { QString lastLine; while (!file.atEnd()) { lastLine = file.readLine(); } file.close(); QStringList list = lastLine.split("t"); lastID = list.at(0).toInt(); } } lastID++;}void SaveRunTime::appendLog(){ logFile = QString("%1/%2_runtime_%3.txt").arg(path).arg(name).arg(QDate::currentDate().year()); QFile file(logFile); //写入当前首次运行时间 if (file.open(QFile::WriteOnly | QFile::Append | QFile::Text)) { QString strID = QString("%1t").arg(lastID); QString strStartTime = QString("%1t").arg(startTime.toString("yyyy-MM-dd HH:mm:ss")); QString strEndTime = QString("%1t").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss")); int day, hour, minute; getDiffValue(startTime, QDateTime::currentDateTime(), day, hour, minute); QString strRunTime = QString("%1 天 %2 时 %3 分").arg(day).arg(hour).arg(minute); QString line = strID + strStartTime + strEndTime + strRunTime; QTextStream stream(&file); stream << line << NEWLINE; file.close(); }}void SaveRunTime::saveLog(){ //每次保存都是将之前的所有文本读取出来,然后替换最后一行即可 logFile = QString("%1/%2_runtime_%3.txt").arg(path).arg(name).arg(QDate::currentDate().year()); QFile file(logFile); //如果日志文件不存在,则初始化一个日志文件 if (file.size() == 0) { initLog(); appendLog(); return; } if (file.open(QFile::ReadWrite)) { //一行行读取到链表 QStringList content; while (!file.atEnd()) { content.append(file.readLine()); } //重新清空文件 file.resize(0); //如果行数小于2则返回 if (content.count() < 2) { file.close(); return; } QString lastLine = content.last(); QStringList list = lastLine.split("t"); //计算已运行时间 int day, hour, minute; getDiffValue(startTime, QDateTime::currentDateTime(), day, hour, minute); QString strRunTime = QString("%1 天 %2 时 %3 分").arg(day).arg(hour).arg(minute); //重新拼接最后一行 list[2] = QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"); list[3] = strRunTime; lastLine = list.join("t"); //重新替换最后一行并写入新的数据 content[content.count() - 1] = lastLine; QTextStream stream(&file); stream << content.join("") << NEWLINE; file.close(); }}
三、效果图
到此,关于"Qt运行时间记录类怎么使用"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
时间
运行
文件
日志
软件
一行
学习
数据
文本
意外
数据库
时候
更多
格式
记事本
帮助
输出
选择
实用
糟糕
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
app软件开发合同免费下载
医疗his系统数据库
申论个人信息安全和网络安全
广东嵌入式软件开发有用吗
暗黑2 服务器稳定
中国网络安全监察大队
单路双路服务器的区别在哪里啊
access数据库替代
核电工控网络安全知识
计算机系统网络安全基础
计算机网络技术既对社会
图书服务器有哪些
发票领用提示服务器异常怎么处理
退出mysql服务器端的命令
als视频服务器
重庆软件开发驻场咨询
数据库方面的测试
oracle是商业数据库
网络安全3000论文
视频剪辑软件开发教程
部门考核软件开发
增城app软件开发设计
安徽 林业厅 数据库
服务器调用任务管理器
什么的网络安全问题与防范
龙岗正规的网络安全建设
上海有哪些网络技术有限公司
软件开发面试八股文
怎么访问服务器数据库
管道数据库