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

Tags: