开发者

Qt实现配置文件读写操作的示例详解

开发者 https://www.devze.com 2025-05-26 10:40 出处:网络 作者: 罗非鱼61
目录1. 保存分组数据到配置文件2. 从配置文件加载分组数据3. 分组操作关键点4. 完整使用示例5. 扩展:动态分组管理1. 保存分组数据到配置文件
目录
  • 1. 保存分组数据到配置文件
  • 2. 从配置文件加载分组数据
  • 3. 分组操作关键点
  • 4. 完整使用示例
  • 5. 扩展:动态分组管理

1. 保存分组数据到配置文件

#include <QSettings>
 
void saveNetworkConfig() {
    QSettings settings("network.ini", QSettings::IniFormat);
 
    // 网络配置分组
    settings.beginGroup("Network");
 
    // 源地址配置编程
    settings.beginGroup("Source");
    settings.setValue("IP", "192.168.1.100");
    settings.setValue("Port", 5000);
    settings.endGroup(); // 结束 Source 分组
 
    // 目标地址配置
    settings.beginGroup("Destination");
    settings.setValue("IP", "10.10.2.200");
    settings.setValue("Port", 8080);
    settings.endGroup(); // 结束 Destination 分组
 
    settings.endGroup(); // 结束 Network 分组
 
    settings.sync(); // 立即写入文件
}

生成的 network.ini 文件内容:

[Network/Source]

IP=192.168.1.100

Port=5000

 

[Netwww.devze.comwork/Destination]

IP=10.10.2.200

Port=8080

2. 从配置文件加载分组数据

#include <QSettings>
#include <QDebug>
 
void loadNetworkConfig() {
    QSettings settings("network.ini", QSettings::IniFormat);
 
    // 加载源地址配置
    settings.beginGroup("Network/Source");
    QString srcIP = settings.value("IP", "127.0.0.1").toString();
    int srcPort = settings.value("Port", 8000).toInt();
    settings.endGroup();
 
    // 加载目标地址配置
    settings.beginGroup("Network/Destination");
    QString dstIP = settings.value("IP", "0.0.0.0").toString();
    int dstPort = settings.value("Port", 80).toInt();
    settings.endGroup();
 
    // 打印结果
    qDebug() << "源地址:" << srcIP << ":" << srcPort;
    qDebug() <&lhttp://www.devze.comt; "目标地址:" << dstIP << ":" << dstPort;
}

输出结果:

源地址: "192.168.1.100" : 5000

目标地址: "10.10.2.200" : 8080

3. 分组操作关键点

操作代码示例说明
开始分组beginGroup("Network")进入层级配置
嵌套分组beginGroup("Source")可多层嵌套
结束分组endGroup()必须与beginGroup成对出现
组合路径beginGroup("Network/Source")直接访问深层分组
默认值处理value("Port", 80)当键不存在时返回默认值

4. 完整使用示例

#include <QCoreApplication>
#include <QSettings>
#include <QDebug>
 
int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);
 
    // 保存配置
    saveNetworkConfig();
 
    // 加载配置
    loadNetworkConfig();
 
    return 0;
}

5. 扩展:动态分组管理

如果需要处理多个动态 网络配置(如保存多个服务器配置):

// 保存多个服务器配置
void saveServers() {
    QSettings settings("servers.ini", QSettings::IniFormat);
 
    QStringList servers = {"ServerA", "ServerB", "ServerC"};
    foreach (const QString &name, servers) {
        settings.beginGroup(name); // 动态生成分组名
        settings.setValue("IP", name + ".example.com");
        settings.setValue("Port", 8080);
        settings.endGroup();
    }
}
 
// 加载所有服务器
void loadServers() {
    QSettings settings("servers.ini", QSettings::IniFormat);
 
    foreach (const QString &group : settings.childGroups())js {
        settings.beginGroup(group);
        qDebug() << "服务器" << group 
                 << "=> IP:" << settings.value("IP").toString()
                 << "Port:" << settings.value("Port").toInt();
        settings.endGroup();
    }
}

生成的 servers.ini

[ServerA]

IP=ServerA.example.com

Poandroidrt=8080

 

[ServerB]

IP=ServerB.example.com

Port=8080

 

[ServerC]

IP=ServerC.example.com

Port=8080

通过这种分组方式可以:

  • 避免键名冲突(如不同分组的Port
  • 提高配置文件可读性
  • 方便批量管理同类配置项

到此这篇关于Qt实现配置文件读写操作的示例详解的文章就介绍到这了,更多相关Qt读写配置文件内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号