《QT实用小工具·二十六》运行时间记录

1、概述
源码放在文章末尾

运行时间记录,包含如下功能:

    1. 可以启动和停止服务,在需要的时候启动。
    1. 可以指定日志文件存放目录。
    1. 可以指定时间日志输出间隔。
    1. 可以单独追加一条记录到日志文件。
    1. 日志为文本格式,清晰明了。

软件demo如下所示:
在这里插入图片描述
项目部分代码如下:

#ifndef SAVERUNTIME_H
#define SAVERUNTIME_H

/**
 * 运行时间记录
 * 1. 可以启动和停止服务,在需要的时候启动。
 * 2. 可以指定日志文件存放目录。
 * 3. 可以指定时间日志输出间隔。
 * 4. 可以单独追加一条记录到日志文件。
 * 5. 日志为文本格式,清晰明了。
 */

#include <QObject>
#include <QDateTime>

class QTimer;

#ifdef quc
class Q_DECL_EXPORT SaveRunTime : public QObject
#else
class SaveRunTime : public QObject
#endif

{
    Q_OBJECT
public:
    static SaveRunTime *Instance();
    explicit SaveRunTime(QObject *parent = 0);
    ~SaveRunTime();

private:
    static QScopedPointer<SaveRunTime> self;

    //日志文件路径
    QString path;
    //日志文件名称
    QString name;

    //最后的编号
    int lastID;
    //保存间隔
    int saveInterval;
    //开始时间
    QDateTime startTime;
    //日志文件
    QString logFile;
    //保存文件定时器
    QTimer *timerSave;

private:
    //比较两个时间差值
    void getDiffValue(const QDateTime &startTime, const QDateTime &endTime, int &day, int &hour, int &minute);

public Q_SLOTS:
    //启动服务
    void start();
    //停止服务
    void stop();

    //新建目录
    void newPath();
    //初始化日志文件
    void initLog();
    //追加一条记录到日志文件
    void appendLog();
    //保存运行时间到日志文件
    void saveLog();

    //设置文件保存目录
    void setPath(const QString &path);
    //设置文件名称
    void setName(const QString &name);
    //设置保存间隔
    void setSaveInterval(int saveInterval);
};

#endif // SAVERUNTIME_H

源码下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/546188.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

记一次生产环境Java堆内存溢出问题排查思路

文章目录 1. 用Visual VM 加载堆转储文件2. 用Visual VM 分析堆转储文件3. 结合分析结果,定位并解决问题 1. 用Visual VM 加载堆转储文件 先将转储文件从服务器下载下来&#xff0c;打开Visual VM&#xff0c;点击右上角的Load Snapshot&#xff0c;将这个转储文件加载到Visua…

移动开发避坑指南——内存泄漏

在日常编写代码时难免会遇到各种各样的问题和坑&#xff0c;这些问题可能会影响我们的开发效率和代码质量&#xff0c;因此我们需要不断总结和学习&#xff0c;以避免这些问题的出现。接下来我们将围绕移动开发中常见问题做出总结&#xff0c;以提高大家的开发质量。本系列文章…

外卖点餐APP开发需要哪些功能

uni-app框架&#xff1a;使用Vue.js开发跨平台应用的前端框架&#xff0c;编写一套代码&#xff0c;可编译到Android、小程序等平台。 框架支持:springboot/Ssm/thinkphp/django/flask/express均支持 前端开发:vue.js 可选语言&#xff1a;pythonjavanode.jsphp均支持 运行软件…

LeetCode_101(对称二叉树)

1.递归 public boolean isSymmetric(TreeNode root) {if(root null){return true;}return deepCheck(root.left,root.right);}boolean deepCheck(TreeNode left, TreeNode right){//递归的终止条件是两个节点都为空//或者两个节点中有一个为空//或者两个节点的值不相等if(lef…

RocketMQ 事件驱动:云时代的事件驱动有啥不同?

作者&#xff1a;林清山&#xff08;隆基&#xff09; 前言&#xff1a; 从初代开源消息队列崛起&#xff0c;到 PC 互联网、移动互联网爆发式发展&#xff0c;再到如今 IoT、云计算、云原生引领了新的技术趋势&#xff0c;消息中间件的发展已经走过了 30 多个年头。 目前&a…

如何应对MySQL单表数据量过大:垂直分表与水平分表策略解析

话接上回&#xff0c;单表最大数据建议两千万&#xff0c;那如果开发一个项目&#xff0c;预计注册量达到一个亿怎么办。 单表内放这么多数据&#xff0c;MYSQL底层B树的层级结构就可能会变得很高&#xff0c;磁盘io次数变多&#xff0c;性能会大幅度降低。所以考虑数据库分表…

01-Git 之快速入门操作本地仓库

https://learngitbranching.js.org/?localezh_CN在线练习git 1. Git 安装好Git以后, 先检查是否已经绑定了用户名和邮箱 git config --list1.1 为什么要使用版本控制&#xff1f; 从个人角度&#xff1a; 在做项目时&#xff0c;如果一点点去改代码会很乱&#xff0c;不利…

顺序表(C语言版)

前言&#xff1a;本篇文章我们来详细的讲解一下顺序的有关知识&#xff0c;这篇文章中博主会以C语言的方式实现顺序表。以及用顺序表去实现通讯录的代码操作。 目录 一.顺序表的概念 二.顺序表的分类 1.静态顺序表 三.动态顺序表的实现 1.顺序表的初始化 2.顺序表的尾插…

python 重载内置函数吗

python中是不支持函数重载的&#xff0c;但在python3中提供了这么一个装饰器functools.singledispatch&#xff0c;它叫做单分派泛函数&#xff0c;可以通过它来完成python中函数的重载&#xff0c;让同一个函数支持不同的函数类型&#xff0c;它提供的目的也正是为了解决函数重…

智能物联网远传冷水表管理系统

智能物联网远传冷水表管理系统是一种基于物联网技术的先进系统&#xff0c;旨在实现对冷水表的远程监测、数据传输和智能化管理。本文将从系统特点、构成以及带来的效益三个方面展开介绍。 系统特点 1.远程监测&#xff1a;系统可以实现对冷水表数据的远程监测&#xff0c;无…

累积分布函数图(CDF)的介绍、matlab的CDF图绘制方法(附源代码)

在对比如下两个误差的时候&#xff0c;怎么直观地分辨出来谁的误差更低一点&#xff1f;&#xff1a; 通过这种误差时序图往往不容易看出来。 但是如果使用CDF图像&#xff0c;以误差绝对值作为横轴&#xff0c;以横轴所示误差对应的累积概率为纵轴&#xff0c;绘制曲线图&am…

Python开源工具库使用之词云Wordcloud

文章目录 前言一、基本使用1.1 文本生成词云1.2 配置项 二、进阶用法2.1 自定义形状2.2 自定义着色2.3 自定义词频2.4 中文 三、实际案例3.1 工作报告词云3.2 周杰伦歌词词云 四、总结4.1 优点和局限性4.2 展望未来发展 参考 前言 当我们需要将大量文本数据可视化展示时&#…

不得不学的Zabbix监控系统,最细搭建详解

目录 一、为什么要做监控 二、Zabbix介绍 三、zabbix组成 四、Zabbix主要功能 五、zabbix 监控原理 六、zabbix运行机制 七、Zabbix的监控方式 7.1 主动模式 7.2 被动模式 八、Zabbix监控系统监控对象 九、Zabbix的优缺点 9.1Zabbix的优点 9.2Zabbix的缺点 9.3za…

ELK日志分析系统之Zookeeper

一、Zookeeper简介 ZooKeeper是一种为分布式应用所设计的高可用、高性能且一致的开源协调服务&#xff0c;它提供了一项基本服务&#xff1a;分布式锁服务。分布式应用可以基于它实现更高级的服务&#xff0c;实现诸如同步服务、配置维护和集群管理或者命名的服务。 Zookeepe…

腾讯云服务器CVM标准型S8实例CPU内存、网络和存储性能测评

腾讯云第八代云服务器标准型S8实例基于全新优化虚拟化平台&#xff0c;CPU采用Intel Emerald Rapids 全新处理器&#xff0c;睿频3.0GHz&#xff0c;内存采用最新DDR5&#xff0c;默认网络优化&#xff0c;最高内网收发能力达4500万pps&#xff0c;最高内网带宽可支持120Gbps。…

61、ARM/串口通信相关学习20240415

一、串口通信&#xff1a;实现PC端串口助手与开发板的字符串通信。 代码&#xff1a; main&#xff1a; #include "uart4.h"int main(){uart4_config();//char a;char s[64];while (1){//a getchar();//putchar(a1);gets(s);puts(s);}return 0;}usrt4.c&#xff…

protobuf 编码原理

简介 Protocol Buffers&#xff08;protobuf&#xff09;&#xff0c;它是 Google 开发的一种数据序列化协议&#xff08;与 XML、JSON 类似&#xff09;。 优点&#xff1a; 效率高&#xff1a;Protobuf 以二进制格式存储数据&#xff0c;比如 XML 和 JSON 等文本格式更紧凑…

【虚幻引擎】DTProjectSettings 蓝图获取基本项目配置插件使用说明 获取项目命名,项目版本,公司名,公司识别名,主页,联系方式

本插件可以使用蓝图获取到项目的一些基本配置&#xff0c;如获取&#xff1a;公司名、公司识别名、版权声明、描述、主页、许可条款、隐私政策、项目ID、项目命名、项目版本、支持联系方式、项目显示标题、项目调试标题信息、应保留窗口宽高比、使用无边框窗口、以VR启动、允许…

CommunityToolkit.Mvvm笔记---Ioc

使用MVVM模式提高应用程序代码库中的模块化程度的最常用模式是使用某种形式的反转控制&#xff08;Ioc&#xff09;。其中最常见的解决方案是使用依赖关系注入&#xff0c;该解决方案存在于创建多个注入后端类的服务&#xff08;即以参数的形式传递给 viewmodel 构造函数&#…

携程景点详情API:电商发展新引擎,推动旅游智能化升级

随着信息技术的快速发展&#xff0c;旅游行业正迎来一场深刻的智能化升级。作为电商发展的新引擎&#xff0c;携程景点详情API以其丰富的数据资源和高效的服务能力&#xff0c;正逐渐成为推动旅游智能化升级的重要力量。本文将深入探讨携程景点详情API在电商发展中的作用&#…