《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

源码下载

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mybatis 入门

MyBatis是一款持久层框架&#xff0c;免除了几乎所有的JDBC代码、参数及获取结果集工作。可以通过简单的XML或注解来配置和映射原始类型、接口和Java POJO为数据库中的记录。 1 无框架下的JDBC操作 1&#xff09;加载驱动&#xff1a;Class.forName(“com.mysql.cj.jdbc.Driv…

AAAI24 - Model Reuse Tutorial

前言 如果你对这篇文章感兴趣&#xff0c;可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」&#xff0c;查看完整博客分类与对应链接。 该篇 Tutorial 主要对 Model Reuse 当下的进展进行了整理和总结。 The Paradigm Shifts Tutorial 中指出在一些数据量比较…

分布式锁-Redission快速入门

实战篇Redis 5、分布式锁-redission 5.2 分布式锁-Redission快速入门 引入依赖&#xff1a; <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.13.6</version> </dependency>配置…

STM32学习和实践笔记(12):蜂鸣器实验

蜂鸣器主要分为两种&#xff0c;一种是压电式的无源蜂鸣器&#xff0c;一种是电磁式的有源蜂鸣器。 有源和无源是指其内部有没有振荡器。 无源的没有内部振荡器&#xff0c;需要输入1.5-5KHZ的音频信号来驱动压电蜂鸣片发声。 有源的内部有振荡器&#xff0c;因此只需要供给…

PostgreSQL入门到实战-第二十七弹

PostgreSQL入门到实战 PostgreSQL中数据分组操作(二)官网地址PostgreSQL概述PostgreSQL中HAVING命令理论PostgreSQL中HAVING命令实战更新计划 PostgreSQL中数据分组操作(二) 使用PostgreSQL HAVING子句来指定组或聚合的搜索条件 官网地址 声明: 由于操作系统, 版本更新等原因…

基于Python豆瓣电影数据可视化分析系统的设计与实现

大数据可视化项目——基于Python豆瓣电影数据可视化分析系统的设计与实现 2024最新项目 项目介绍 本项目旨在通过对豆瓣电影数据进行综合分析与可视化展示&#xff0c;构建一个基于Python的大数据可视化系统。通过数据爬取收集、清洗、分析豆瓣电影数据&#xff0c;我们提供了…

Docker:使用编排Compose快速部署容器化应用

1、简述 Docker Compose 是 Docker 官方提供的一个工具&#xff0c;用于定义和管理多容器应用。它通过一个简单的 YAML 文件来定义应用的服务、网络、卷等配置&#xff0c;并提供了一组命令来启动、停止、构建和管理应用。使用 Docker Compose 可以让开发人员轻松地在本地开发…

cdn加速与ssl加速

cdn CDN的全称是Content Delivery Network&#xff0c;即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节&#xff0c;使内容传输的更快、更稳定。 简单的来说&#xff0c;就是把原服务器上数据复制到其他服务器上&#xff0c;用户访…

蓝桥杯——松散子序列

题目 分析 很明显的动态规划问题&#xff0c;每次我们都取当前位置的最大值就可&#xff0c;从头开始&#xff0c;dp[i]max(dp[i-2],dp[i-3])num[i-3]. 代码 ninput() num[] for i in n:num.append(ord(i)-96) dp[0]*(len(num)3) for i in range(3,len(num)3):dp[i]max(dp[i…

推荐收藏!大厂 Transformer 常考面试题汇总!

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学&#xff0c;针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总…

锁策略总结

锁策略 悲观锁和乐观锁 乐观锁和悲观锁不是具体类型的锁而是指两种不同的对待加锁的态度&#xff0c;这两个锁面对锁冲突的态度是相反的。 乐观锁&#xff1a;认为不存在很多的并发操作&#xff0c;因此不需要加锁。悲观锁&#xff1a;认为存在很多并发操作&#xff0c;因此需…

什么是企微文档?怎样搭建企微文档?

企微文档作为一种高效、便捷的协作工具&#xff0c;已经有越来越多企业的在使用。那么&#xff0c;什么是企微文档&#xff1f;我们又该如何高效搭建企微文档呢&#xff1f;这就是我们今天要来探讨的问题。 | 什么是企微文档 简单来说&#xff0c;企微文档就是企业微信平台上的…

FFmpeg: 自实现ijkplayer播放器--06封装打开和关闭stream

文章目录 流程图stream openstream close流程图 stream open 初始化SDL以允许⾳频输出;初始化帧Frame队列初始化包Packet队列初始化时钟Clock初始化音量创建解复用读取线程read_thread创建视频刷新线程video_refresh_threadint FFPlayer::stream_open(const char

ASUS华硕ROG幻13笔记本电脑GV301R工厂模式原厂OEM预装Windows11系统,恢复出厂开箱状态

适用于型号&#xff1a;GV301RC、GV301RE、GV301RA 工厂模式安装包&#xff1a;https://pan.baidu.com/s/1gLme1VqidpUjCLocgm5ajQ?pwddnbk 提取码&#xff1a;dnbk 工厂模式Win11安装包带有ASUS RECOVERY恢复功能、自带所有驱动、出厂主题壁纸、系统属性专属联机支持标志…

JavaScript 高阶函数小结

JavaScript 高阶函数小结 js的函数其实都是指向某个变量&#xff0c;既然变量可以指向函数&#xff0c;函数的参数能接收变量&#xff0c;那么一个函数就可以接收另外一个函数作为参数&#xff0c;这种函数就称之为高阶函数。 Arr扩展有&#xff1a;forEach、map、reduce fil…

defineProperty 与 proxy 详解

目录 前言 definePropety Setters 和 Getters watch API proxy watch API 优化 Vue3.0 里为什么要用 Proxy 替代 defineProperty ? Proxy 和 Object.defineProperty 的区别&#xff1f; 前言 我们或多或少都听过“数据绑定”这个词&#xff0c;“数据绑定”的关键在于…

#新版Onenet云平台使用(ESP8266 AT指令上报数据以及公网MQTT服务器连接测试)

1.上云方式&#xff1a;MQTT 参考&#xff1a; 新版ONENET物联网开放平台ATMQTT指令连接_at指令连接onenet的mqtt-CSDN博客https://blog.csdn.net/lilbye/article/details/131770196 ESP8266-01s入门&#xff1a;AT指令讲解、上云与MQTT通信教程-物联沃-IOTWORD物联网https:…

七:ReentrantReadWriteLock —— 读写锁

目录 1、ReentrantReadWriteLock 入门1.1、概念1.2、案例1.2.1、写写互斥1.2.2 锁降级 2、ReentrantReadWriteLock 源码解析2.1、属性2.2、构造方法2.3、内部类2.4、读写状态的设计 —— 按位切割使用2.5、【写锁】加锁方法 lock() —— ReentrantReadWriteLock.WriteLock2.4.1…

力扣:49. 字母异位词分组

知识点&#xff1a; 散列函数 散列函数能使对一个数据序列的访问过程更加迅速有效&#xff0c;通过散列函数&#xff0c;数据元素将被更快地定位&#xff1a; 1. 直接寻址法&#xff1a;取关键字或关键字的某个线性函数值为散列地址。即H&#xff08;key&#xff09;key或H&a…

蓝桥杯物联网竞赛_STM32L071_16_EEPROM

仍然是没有考过的知识点 朴素的讲就是板子中一块不会因为断电重启而导致数值初始化的一片地址 要注意的是有时候容易把板子什么写错导致板子什么地址写坏了导致程序无法烧录&#xff0c;这个时候记得一直按flash键烧录&#xff0c;烧录时会报错&#xff0c;点击确定&#xff0…