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

 更新时间:2025年05月26日 09:39:41   作者:罗非鱼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

通过这种分组方式可以:

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

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

相关文章

  • 轻松实现C/C++各种常见进制相互转换

    轻松实现C/C++各种常见进制相互转换

    这篇文章主要介绍了轻松实现C/C++各种常见进制相互转换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 深入分析C++模板特化与偏特化

    深入分析C++模板特化与偏特化

    这篇文章主要介绍了C++模板特化与偏特化的相关资料,帮助大家更好的理解和学习c++,感兴趣的朋友可以了解下
    2020-08-08
  • C++实现反转链表的两种方法

    C++实现反转链表的两种方法

    本文主要介绍了C++实现反转链表的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • 一篇文章带你了解C语言文件操作中的几个函数

    一篇文章带你了解C语言文件操作中的几个函数

    这篇文章主要介绍了使用C语言操作文件的基本函数整理,包括创建和打开以及关闭文件的操作方法,需要的朋友可以参考下,希望能够给你带来帮助
    2021-09-09
  • C语言预处理器使用方法讲解

    C语言预处理器使用方法讲解

    C预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理。我们将把C预处理器(C Preprocessor)简写为CPP
    2022-12-12
  • c语言实现简易版三子棋(附完整代码)

    c语言实现简易版三子棋(附完整代码)

    大家好,本篇文章主要讲的是c语言实现简易版三子棋(附完整代码),感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • C语言可变参数函数详解示例

    C语言可变参数函数详解示例

    一般我们编程的时候,函数中形式参数的数目通常是确定的,在调用时要依次给出与形式参数对应的实际参数。但在某些情况下我们希望函数的参数个数可以根据需要确定,因此c语言引入可变参数函数。典型的可变参数函数的例子有printf()、scanf()等,下面我就开始讲解
    2013-11-11
  • VC6.0实现读取Excel数据的方法

    VC6.0实现读取Excel数据的方法

    这篇文章主要介绍了VC6.0实现读取Excel数据的方法,非常实用的功能,需要的朋友可以参考下
    2014-07-07
  • 详解C语言结构体,枚举,联合体的使用

    详解C语言结构体,枚举,联合体的使用

    这篇文章主要给大家介绍一下关于C语言中结构体、枚举、联合体的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考一下
    2022-07-07
  • 浅谈C语言中的指针和数组有什么区别

    浅谈C语言中的指针和数组有什么区别

    C语言中的指针和数组是两个重要的数据结构,它们在内存管理和数据存储方面有许多相似之处,但也存在一些关键的区别,本文就来介绍一下C语言中的指针和数组有什么区别,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09

最新评论