QSettings讀寫ini配置文件
- 2019 年 12 月 20 日
- 筆記
Qt中使用QSettings類讀取ini後綴的配置文件非常簡單,使用該類也可以很簡單的操作Windows註冊表。以前也使用過MFC中的WritePrivateProfileString()和GetPrivateProfileString()這兩個API操作ini配置文件。
使用QSettings類讀寫ini配置文件的示例程式碼
相關程式碼如下:
// test.cpp
#include <QCoreApplication> #include <QSettings> #include <iostream> #include <QDebug> using namespace std; int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QString fileName; fileName = QCoreApplication::applicationDirPath(); fileName += "/config/net.ini"; QSettings settings(fileName, QSettings::IniFormat); // 設置伺服器的ip和埠資訊 settings.beginGroup("server"); settings.setValue("ip", "192.168.1.120"); settings.setValue("port", 10001); settings.endGroup(); // 設置資料庫連接資訊 settings.beginGroup("dbInfo"); settings.setValue("dbSource", "MySQL"); settings.setValue("host", "15.15.0.216"); settings.setValue("port", 9011); settings.setValue("username", "root"); settings.setValue("password", "123456"); settings.setValue("dbName", "HBHazeDB"); settings.endGroup(); // 讀取ini文件 settings.setIniCodec("UTF8"); // 設置編碼方式 --->解析ini配置文件中的文字問題 // 獲取server分組下的ip和埠資訊 settings.beginGroup("server"); QString strIp = settings.value("ip").toString(); int port = settings.value("port").toInt(); settings.endGroup(); // 獲取dbInfo分組下的資料庫連接資訊 settings.beginGroup("dbInfo"); QString dbSource = settings.value("dbSource").toString(); QString host = settings.value("host").toString(); int dbPort = settings.value("port").toInt(); QString username = settings.value("username").toString(); QString password = settings.value("password").toString(); QString dbName = settings.value("dbName").toString(); settings.endGroup(); qDebug() << "server info:[" << "ip:" << strIp << ",port:" << port << "]"; qDebug() << "dbInfo:[" << "dbSource:" << dbSource << ",host:" << host << ",dbPort:" << dbPort << ",username:" << username << ",password:" << password << ",dbName:" << dbName << "]"; return a.exec(); }對應的net.ini配置文件如下:
[server] ip=192.168.1.120 port=10001 [dbInfo] dbSource=MySQL host=15.15.0.216 port=9011 username=root password=123456 dbName=HBHazeDB
