C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > Qt读写配置文件

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

作者:罗非鱼61

这篇文章主要为大家详细介绍了如何使用Qt实现配置文件读写操作,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下

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
 
[Network/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() << "目标地址:" << 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()) {
        settings.beginGroup(group);
        qDebug() << "服务器" << group 
                 << "=> IP:" << settings.value("IP").toString()
                 << "Port:" << settings.value("Port").toInt();
        settings.endGroup();
    }
}

生成的 servers.ini

[ServerA]
IP=ServerA.example.com
Port=8080
 
[ServerB]
IP=ServerB.example.com
Port=8080
 
[ServerC]
IP=ServerC.example.com
Port=8080

通过这种分组方式可以:

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

您可能感兴趣的文章:
阅读全文