目录
- 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.100Port=5000 [Netwww.devze.comwork/Destination]IP=10.10.2.200Port=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.comPoandroidrt=8080 [ServerB]IP=ServerB.example.comPort=8080 [ServerC]IP=ServerC.example.comPort=8080
通过这种分组方式可以:
- 避免键名冲突(如不同分组的
Port) - 提高配置文件可读性
- 方便批量管理同类配置项
到此这篇关于Qt实现配置文件读写操作的示例详解的文章就介绍到这了,更多相关Qt读写配置文件内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
加载中,请稍侯......
精彩评论