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语言中的abs()函数和exp()函数的用法

    C语言中的abs()函数和exp()函数的用法

    这篇文章主要介绍了C语言中的abs()函数和exp()函数的用法,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • VSCode插件开发全攻略之跳转到定义、自动补全、悬停提示功能

    VSCode插件开发全攻略之跳转到定义、自动补全、悬停提示功能

    这篇文章主要介绍了VSCode插件开发全攻略之跳转到定义、自动补全、悬停提示,需要的朋友可以参考下
    2020-05-05
  • C++ OpenCV实战之标记点检测的实现

    C++ OpenCV实战之标记点检测的实现

    这篇文章主要介绍了如何利用C++ OpenCV实现关键点的检测,文中的示例代码讲解详细,对我们学习OpenCV有一定帮助,感兴趣的小伙伴可以了解一下
    2022-03-03
  • C++超详细讲解模板的使用

    C++超详细讲解模板的使用

    这篇文章主要介绍了C++中模板(Template)的详解及其作用介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Linux C/C++ timeout命令实现运行具有时间限制功能

    Linux C/C++ timeout命令实现运行具有时间限制功能

    inux timeout命令的一个属性是时间限制。可以为任何命令设置时间限制。如果时间到期,命令将停止执行,这篇文章主要介绍了Linux C/C++ timeout命令实现(运行具有时间限制),需要的朋友可以参考下
    2023-02-02
  • C语言实现图书管理系统开发

    C语言实现图书管理系统开发

    这篇文章主要为大家详细介绍了C语言实现图书管理系统开发,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • 深入浅出分析C++ string底层原理

    深入浅出分析C++ string底层原理

    C ++的string对象实质上就是一个容器,其内部有一个c_str方法能够返回一个指向的实质存储字符串副本的数据成员。即通过string::c_str()配合printf函数可以获取的字符串副本的内存地址
    2021-11-11
  • C语言转义字符详解

    C语言转义字符详解

    这篇文章主要介绍了C语言转义字符详解,本篇文章通过简要的案例,讲解了C语言转义字符该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C语言的分支和循环语句你了解吗

    C语言的分支和循环语句你了解吗

    这篇文章主要为大家详细介绍了C语言的分支和循环语句,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • C++读写INI配置文件的类实例

    C++读写INI配置文件的类实例

    这篇文章主要介绍了C++读写INI配置文件的类,实例分析了C++操作ini配置文件的相关技巧,需要的朋友可以参考下
    2015-06-06

最新评论