qt中生成并读取配置文件Ini

引言

做项目的时候需要将一些参数设置的更加灵活,通过用户修改来控制程序中一些参数,所以写到了配置文件中方便处理。

实现

下面是配置文件生成、读取的代码。
configinfo.h

#ifndef CONFIGINFO_H
#define CONFIGINFO_H#include <QMutex>
#include <QSettings>/********************************************======功能描述:=======1.配置websocket断开重连的时间间隔,2.配置websocket发送心跳的时间间隔,3.配置websocket尝试重连的次数。
********************************************/class ConfigInfo
{
private:ConfigInfo();
public:static ConfigInfo *getInstance();//获取指向创建的配置信息的指针static int getReconnectTime();//获取断开重连的时间static int getSendHeartTime();//获取发送心跳的时间static int getReconnectCount();//获取重连的次数static QString getExcutableProgramPath();//获取可执行程序的路径
private:void writeKeyValue(QString strSection,QString strKey,QVariant value);//写键值对void writeIniFile();//写配置文件void getIniFileValue();//获取配置文件中的各值
private:static ConfigInfo   *m_config;//指向配置对象的指针static QMutex       m_mutex;//互斥锁static int          m_reconnectTime;//断开重连的时间间隔static int          m_sendHeartTime;//发送心跳的时间间隔static int          m_reconnectCount;//断开重连的次数QSettings           *m_setting;//指向setting对象指针
};#endif // CONFIGINFO_H

configinfo.cpp

#include "configinfo.h"
#include <QCoreApplication>
#include <QMutexLocker>
#include <QDebug>ConfigInfo   *ConfigInfo::m_config = nullptr;
QMutex  ConfigInfo::m_mutex;
int     ConfigInfo::m_reconnectTime;
int     ConfigInfo::m_sendHeartTime;
int     ConfigInfo::m_reconnectCount;
ConfigInfo::ConfigInfo()
{QString strPath = getExcutableProgramPath();qDebug()<<"strPath:"<<strPath;m_setting = new QSettings(strPath,QSettings::IniFormat);writeIniFile();//配置文件已经存在要生成的内容后就可以不用再去写
}ConfigInfo *ConfigInfo::getInstance()
{if (m_config == nullptr) {static QMutexLocker locker(&m_mutex);if (m_config == nullptr) {m_config = new ConfigInfo();return m_config;}}return m_config;
}int ConfigInfo::getReconnectTime()
{return m_reconnectTime;
}int ConfigInfo::getSendHeartTime()
{return m_sendHeartTime;
}int ConfigInfo::getReconnectCount()
{return m_reconnectCount;
}QString ConfigInfo::getExcutableProgramPath()
{return QCoreApplication::applicationDirPath() + "/websocketConfig.ini";
}void ConfigInfo::writeKeyValue(QString strSection, QString strKey, QVariant value)
{m_setting->setValue(QString("%1/%2").arg(strSection).arg(strKey),value);//注意中间的/
}void ConfigInfo::writeIniFile()
{writeKeyValue("Websocket","reconnectTime",3000);writeKeyValue("Websocket","sendHeartTime",3000);writeKeyValue("Websocket","reconnectCount",5);getIniFileValue();
}void ConfigInfo::getIniFileValue()
{m_reconnectTime = m_setting->value("Websocket/reconnectTime").toInt();//获取分段下的键m_sendHeartTime = m_setting->value("Websocket/sendHeartTime").toInt();m_reconnectCount = m_setting->value("Websocket/reconnectCount").toInt();
}

mian.cpp

#include  <QCoreApplication>
#include "configinfo.h"
#include <QDebug>int main(int argc,char *argv[])
{QCoreApplication a(argc,argv);qDebug()<<QStringLiteral("重连次数:")<<ConfigInfo::getInstance()->getReconnectCount();qDebug()<<QStringLiteral("重连时间间隔:")<<ConfigInfo::getInstance()->getReconnectTime();qDebug()<<QStringLiteral("发送心跳间隔:")<<ConfigInfo::getInstance()->getSendHeartTime();return a.exec();//这里写为return 0不能生成配置文件ini
}

以上就是配置文件的生成和读取,main.cpp中主要是测试了一下生成的文件中的内容能否正确读取。
心得:
对于被多个类或者整个项目共享的类,若是一个类对象可以,就将该类定义为单例模式。此外一些获取变量的值的函数可以定义为静态的,就尽量定义为静态函数,方便外部调用,而且共享该值,不用多次拷贝,

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

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

相关文章

plsql常用快捷键

路径&#xff1a; D:\software\PLSQL Developer\PlugIns\shortcuts.txtplsql使用技巧 1、类SQL PLUS窗口:File->New->Command Window&#xff0c;这个类似于oracle的客户端工具sql plus&#xff0c;但比它好用多了。 2、设置关键字自动大写:Tools->Preferences->…

数据库不适合上容器云?| 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;Docker 在企业环境的应用端具有很大的潜力&#xff0c;在这一点上我想大家是有目共睹的…

【Git】fatal: bad boolean config value ‘true~‘ for ‘core.longpaths‘

windwos操作系统git config设置错了参数值&#xff0c;解决方法。 出现原因 在拉取代码时&#xff0c;仓库中存在文件名过长得文件&#xff0c;拉取报错了“filename too long” 解决 git config --system core.longpaths true结果在复制命令时&#xff0c;粘贴到命令行多了一…

qt设置渐变色

概述 此文只作为设置渐变色的一种方式&#xff1a; QDialog#ImDialog{background-color: qlineargradient(x1:0,y1:0,x2:1,y2:1,stop:0 #0e1d2e, stop:1 #141824); }以上为上下、左右渐变。 参考&#xff1a; https://blog.csdn.net/weixin_34034670/article/details/9182692…

linux 查看目录下文件个数

统计某文件夹下文件的个数 ls -l |grep "^-"|wc -l统计某文件夹下目录的个数 ls -l |grep "^&#xff44;"|wc -l统计文件夹下文件的个数&#xff0c;包括子文件夹里的 ls -lR|grep "^-"|wc -l

【数据分析】盘点五一期间最受欢迎的几个景区

戳蓝字“CSDN云计算”关注我们哦&#xff01;五一假期已经结束&#xff0c;小伙伴是不是都还没有玩过瘾&#xff1f;但是没办法&#xff0c;还有很多bug等着我们去写&#xff0c;同样还有需要money需要我们去赚。为了生活总的拼搏。今年五一放了四天假&#xff0c;很多人不再只…

SonarQube代码质量管理平台C++插件sonar-cxx的安装

gblfy推荐了一个好的可替代CFamily插件&#xff0c; sonar-cxx插件&#xff0c;听闻插件作者就是看不惯CFamily的收费&#xff0c;自己写了个开源的&#xff0c; 更牛逼的插件&#xff0c;开源地址 https://github.com/SonarOpenCommunity/sonar-cxx这是我使用插件后的图片&am…

qt提升控件之后,编译报错

引言 自定义的控件&#xff0c;在ui文件中将控件提升为自定义的控件&#xff0c;提升的时候没有指明提升的头文件的相对路径或者绝对路径&#xff0c;导致编译的时候无法找到相应的头文件。 解决方法 1.在被提升的类的头文件前添加本机电脑所在的相对路径&#xff1b; 2.在被…

Spark精华问答 | 学Spark究竟有什么用?

戳蓝字“CSDN云计算”关注我们哦&#xff01;为什么要学习Spark&#xff1f;作为一个用来实现快速而通用的集群计算的平台。扩展广泛使用的MapReduce计算模型&#xff0c;而且高效地支持更多的计算模式&#xff0c;包括交互式查询和流处理。Spark的一个重要特点就是能够在内存中…

SecureCRT 设置护眼最佳方案 的字体及颜色

SecureCRT远程连接Linux服务器 文章目录1. 选择全局选项2. 选择默认会话-【编辑默认设置】3. 选择仿真-【终端选择Linux】4. 选择外观-【当前颜色方案&#xff08;白/黑&#xff09;】 -【字符编码】5. 字体修改-点击字体6. 选择字体及大小7. 关闭重启SecureCRT8. 效果图&#…

qt中QTreeWidget控件的使用

引言 在按照项目设计的样式来实现的时候&#xff0c;发现了一些问题&#xff0c;幸运的是最终找到了解决的方法。 详情 1.QTreeWidget设置列数和隐藏头&#xff08;这里指的是有1所在的那个部位&#xff09; ui->treeWidget->setColumnCount(1);//设置有1列ui->tr…

SecureCRT 免安装、绿色版、免费版本

SecureCRT远程连接Linux服务器 文章目录1. 下载软件2. 解压软件3. 双击运行4. 选择SecureCRT5. 图标点击&#xff0c;输入用户名6. 添加密码&#xff0c;点击确定7. 连接成功1. 下载软件 链接https://pan.baidu.com/s/1vv40uI_0uwIagPGm7FS9_g 提取码t32h 2. 解压软件 3. 双击…

qt中QMultiMap获取键值

概述 QMultiMap获取键值分为两种&#xff0c;一种是获取所有的键值&#xff0c;包含重复的键值&#xff0c;一种是获取不重复的键值&#xff0c;下面记录一下。 1.获取键值 使用函数values(). QMultiMap<int,stuDepart> bookMap; QList<int> levels bookMap.val…

GitHub重大更新即将加入免费软件包管理服务;钉钉社区因出现违规内容将停更整改一个月;Uber上市,定价为45美元……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go永安行共享电动汽车&#xff…

SecureCRT 文件下载上传

SecureCRT远程连接Linux服务器 文章目录1. 点击SecureFX图标2. 填写密码3. 窗口简要说明4. 上传文件5. 下载文件6. 第二种方案(建议使用)&#xff1a;7. 拖拽文件或目录8. 效果图1. 点击SecureFX图标 2. 填写密码 3. 窗口简要说明 4. 上传文件 5. 下载文件 6. 第二种方案(建议使…

qt中关于按钮的click()函数卓见

概述 按钮有一个基类QAbstractButton&#xff0c;这个类中有一个函数click(),j几乎所有的函数都继承了这个类QAbstractButton&#xff0c;同时这个函数click()是一个公有的槽函数&#xff0c;也就是意味着所有的子类都可以调用这个函数。而这个click&#xff08;&#xff09;函…

《复联4》| 生活需要漫威这块糖

戳蓝字“CSDN云计算”关注我们哦&#xff01;漫威电影宇宙&#xff0c;历时11年&#xff0c;经历了21部电影&#xff0c;终于迎来了最终章。有人问如果没看过复联1、2、3可以去看吗&#xff1f;只看过钢铁侠没接触过复联可以去看吗&#xff1f;......看当然是可以看的&#xff…

企业实战02:Oracle数据库的安装和卸载

Oracle数据库专栏 文章目录一、 Oracle安装1.1. Oracle下载链接&#xff1a;1.2. 解压到一个文件夹中1.3. 百度云解压包&#xff1a;二、Oracle安装流程2.1. 以管理员身份运行2.2. 下图忽略2.3. 开始安装2.4. 选择-【是】2.5. 不勾选邮箱2.6. 选择【是】2.7. 选择创建和配置数据…

qt中在QMultiMap中删除自定义数据类的元素

引言 当我们使用QMultiMap的remove函数来删除容器中的某一个元素时&#xff0c;若是容器中存放的是基本数据类型&#xff0c;则程序编译的时候没有任何问题&#xff0c;但是当容器中存放的是自定义的数据&#xff0c;这时若是C基础比较扎实的&#xff0c;应该不会出现编译报错…

10 种最流行的 Web 挖掘工具 | 程序员硬核评测

戳蓝字“CSDN云计算”关注我们哦&#xff01; 程序员硬核评测&#xff1a;客观、高效、不说软话。无论是技术质量、性能水平&#xff0c;还是工具筛选&#xff0c;一测便知&#xff01;作者 | prowebscrapers blog译者 | 高级农民工责编 | 胡巍巍本文经授权转载自高级农民工互…