日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/9/27 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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中主要是測試了一下生成的文件中的內容能否正確讀取。
心得:
對于被多個類或者整個項目共享的類,若是一個類對象可以,就將該類定義為單例模式。此外一些獲取變量的值的函數可以定義為靜態的,就盡量定義為靜態函數,方便外部調用,而且共享該值,不用多次拷貝,

總結

以上是生活随笔為你收集整理的qt中生成并读取配置文件Ini的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。