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
) -
提高配置文件可讀性
-
方便批量管理同類配置項