随笔 - 52  文章 - 0  评论 - 13  阅读 - 16万

QT 读写配置文件(*.INI)

核心类库: 参见>>QSettings 

创建一个配置参数类模型,如 MyConfig

文件:MyConfig.h

复制代码
#include <QString>

class MyConfig
{
public:
    MyConfig();

    void LoadFile();  // 从配置文件中读取
    void SaveFile();  // 向文件中写入

    double P_double1 = 1.23;
    double P_double2 = 3.1415;
    double P_double3 = 10.0;
    int  P_int1 = 456;
    int  P_int2 = 123;
    QString P_string1 = "abc";
    QString P_string2 = "efg";
};
复制代码

 

文件代码:MyConfig.cpp

复制代码
#include "myconfig.h"
#include <QSettings>

#include <iostream>
#include <fstream>

MyConfig::MyConfig()
{ }
void MyConfig::LoadFile() { std::string filepath = "MyConfig.ini"; // 先判断文件是否存在 std::ifstream file(filepath); if(file.good() == false) { this->SaveFile(); return; } // 读取文件 QSettings settings(QString::fromStdString(filepath), QSettings::IniFormat); settings.beginGroup("GroupName1"); this->P_double1 = settings.value("P_double1").toDouble(); this->P_double2 = settings.value("P_double2").toDouble(); this->P_double3 = settings.value("P_double3").toDouble(); settings.endGroup(); settings.beginGroup("GroupName2"); this->P_int1 = settings.value("P_int1").toInt(); this->P_int2 = settings.value("P_int2").toInt(); settings.endGroup(); settings.beginGroup("GroupName3"); this->P_string1 = settings.value("P_string1").toString(); this->P_string2 = settings.value("P_string2").toString(); settings.endGroup(); } void MyConfig::SaveFile() { QSettings settings("MyConfig.ini", QSettings::IniFormat); settings.beginGroup("GroupName1"); settings.setValue("P_double1", this->P_double1); settings.setValue("P_double2", this->P_double2); settings.setValue("P_double3", this->P_double3); settings.endGroup(); settings.beginGroup("GroupName2"); settings.setValue("P_int1", this->P_int1); settings.setValue("P_int2", this->P_int2); settings.endGroup(); settings.beginGroup("GroupName3"); settings.setValue("P_string1", this->P_string1); settings.setValue("P_string2", this->P_string2); settings.endGroup(); }
复制代码

运行程序,调用上述代码方法,即可读写程序目录下的“MyConfig.ini"文件。

 

posted on   云梦鸿  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示