Qt實(shí)現(xiàn)配置文件讀寫(xiě)操作的示例詳解
1. 保存分組數(shù)據(jù)到配置文件
#include <QSettings>
void saveNetworkConfig() {
QSettings settings("network.ini", QSettings::IniFormat);
// 網(wǎng)絡(luò)配置分組
settings.beginGroup("Network");
// 源地址配置
settings.beginGroup("Source");
settings.setValue("IP", "192.168.1.100");
settings.setValue("Port", 5000);
settings.endGroup(); // 結(jié)束 Source 分組
// 目標(biāo)地址配置
settings.beginGroup("Destination");
settings.setValue("IP", "10.10.2.200");
settings.setValue("Port", 8080);
settings.endGroup(); // 結(jié)束 Destination 分組
settings.endGroup(); // 結(jié)束 Network 分組
settings.sync(); // 立即寫(xiě)入文件
}生成的 network.ini 文件內(nèi)容:
[Network/Source]
IP=192.168.1.100
Port=5000
[Network/Destination]
IP=10.10.2.200
Port=8080
2. 從配置文件加載分組數(shù)據(jù)
#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();
// 加載目標(biāo)地址配置
settings.beginGroup("Network/Destination");
QString dstIP = settings.value("IP", "0.0.0.0").toString();
int dstPort = settings.value("Port", 80).toInt();
settings.endGroup();
// 打印結(jié)果
qDebug() << "源地址:" << srcIP << ":" << srcPort;
qDebug() << "目標(biāo)地址:" << dstIP << ":" << dstPort;
}輸出結(jié)果:
源地址: "192.168.1.100" : 5000
目標(biāo)地址: "10.10.2.200" : 8080
3. 分組操作關(guān)鍵點(diǎn)
| 操作 | 代碼示例 | 說(shuō)明 |
|---|---|---|
| 開(kāi)始分組 | beginGroup("Network") | 進(jìn)入層級(jí)配置 |
| 嵌套分組 | beginGroup("Source") | 可多層嵌套 |
| 結(jié)束分組 | endGroup() | 必須與beginGroup成對(duì)出現(xiàn) |
| 組合路徑 | beginGroup("Network/Source") | 直接訪問(wèn)深層分組 |
| 默認(rèn)值處理 | value("Port", 80) | 當(dāng)鍵不存在時(shí)返回默認(rèn)值 |
4. 完整使用示例
#include <QCoreApplication>
#include <QSettings>
#include <QDebug>
int main(int argc, char *argv[]) {
QCoreApplication a(argc, argv);
// 保存配置
saveNetworkConfig();
// 加載配置
loadNetworkConfig();
return 0;
}5. 擴(kuò)展:動(dòng)態(tài)分組管理
如果需要處理多個(gè)動(dòng)態(tài) 網(wǎng)絡(luò)配置(如保存多個(gè)服務(wù)器配置):
// 保存多個(gè)服務(wù)器配置
void saveServers() {
QSettings settings("servers.ini", QSettings::IniFormat);
QStringList servers = {"ServerA", "ServerB", "ServerC"};
foreach (const QString &name, servers) {
settings.beginGroup(name); // 動(dòng)態(tài)生成分組名
settings.setValue("IP", name + ".example.com");
settings.setValue("Port", 8080);
settings.endGroup();
}
}
// 加載所有服務(wù)器
void loadServers() {
QSettings settings("servers.ini", QSettings::IniFormat);
foreach (const QString &group : settings.childGroups()) {
settings.beginGroup(group);
qDebug() << "服務(wù)器" << 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
通過(guò)這種分組方式可以:
- 避免鍵名沖突(如不同分組的
Port) - 提高配置文件可讀性
- 方便批量管理同類(lèi)配置項(xiàng)
到此這篇關(guān)于Qt實(shí)現(xiàn)配置文件讀寫(xiě)操作的示例詳解的文章就介紹到這了,更多相關(guān)Qt讀寫(xiě)配置文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
輕松實(shí)現(xiàn)C/C++各種常見(jiàn)進(jìn)制相互轉(zhuǎn)換
這篇文章主要介紹了輕松實(shí)現(xiàn)C/C++各種常見(jiàn)進(jìn)制相互轉(zhuǎn)換,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
C++實(shí)現(xiàn)反轉(zhuǎn)鏈表的兩種方法
本文主要介紹了C++實(shí)現(xiàn)反轉(zhuǎn)鏈表的兩種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
一篇文章帶你了解C語(yǔ)言文件操作中的幾個(gè)函數(shù)
這篇文章主要介紹了使用C語(yǔ)言操作文件的基本函數(shù)整理,包括創(chuàng)建和打開(kāi)以及關(guān)閉文件的操作方法,需要的朋友可以參考下,希望能夠給你帶來(lái)幫助2021-09-09
c語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易版三子棋(附完整代碼)
大家好,本篇文章主要講的是c語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易版三子棋(附完整代碼),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01
VC6.0實(shí)現(xiàn)讀取Excel數(shù)據(jù)的方法
這篇文章主要介紹了VC6.0實(shí)現(xiàn)讀取Excel數(shù)據(jù)的方法,非常實(shí)用的功能,需要的朋友可以參考下2014-07-07
詳解C語(yǔ)言結(jié)構(gòu)體,枚舉,聯(lián)合體的使用
這篇文章主要給大家介紹一下關(guān)于C語(yǔ)言中結(jié)構(gòu)體、枚舉、聯(lián)合體的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考一下2022-07-07
淺談C語(yǔ)言中的指針和數(shù)組有什么區(qū)別
C語(yǔ)言中的指針和數(shù)組是兩個(gè)重要的數(shù)據(jù)結(jié)構(gòu),它們?cè)趦?nèi)存管理和數(shù)據(jù)存儲(chǔ)方面有許多相似之處,但也存在一些關(guān)鍵的區(qū)別,本文就來(lái)介紹一下C語(yǔ)言中的指針和數(shù)組有什么區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09

