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
通过这种分组方式可以:
- 避免键名冲突(如不同分组的
Port
) - 提高配置文件可读性
- 方便批量管理同类配置项
到此这篇关于Qt实现配置文件读写操作的示例详解的文章就介绍到这了,更多相关Qt读写配置文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!