Qt中QSettings的使用以及ini配置文件读写

        在应用程序开发过程中,用户对程序有一些需求,要求记住一些参数,比如窗口大小,比如配置的ip地址等。这些设置一般都是存在系统里面的,比如windows一般都写在系统注册表或者写INI文件中,那么按照一般的标准来说,许多应用程序是用INI文件来实现的。而Qsettings就是提供了一种方便的方法来存储和恢复应用程序的settings。

两个问题:

  1. 如何将setting写入到注册表中?
  2. 如何将setting写入到本地ini文件中?

问题1:

        在Qt中,设置ini文件并写入到注册表中,一般要先声明一些参数,比如公司名称,比如应用程序名称。如下代码,初始化设置:

#include "mainwindow.h"
#include <QSettings>
#include <QApplication>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //配置参数
    QCoreApplication::setOrganizationName("QQQQQ");
    QCoreApplication::setOrganizationDomain("qqqqq.com");
    QCoreApplication::setApplicationName("WWWWW");
    QCoreApplication::setApplicationVersion("1.0.0");
    //写设置值
    QSettings setting;
    setting.setValue("ip","127.0.0.1");
    setting.setValue("port","3306");
    setting.setValue("name","cch");
    setting.setValue("password","cch");

    MainWindow w;
    w.show();
    return a.exec();
}

        运行后,可以在注册表中看到已设置的参数值,如下图:

         在程序中获取设置值时:

QSettings setting;
QString ip = setting.value("ip").toString();
QString port = setting.value("port").toString();
QString name = setting.value("name").toString();
QString password = setting.value("password").toString();

问题2:

        当不写配置文件到注册表中时,就不需要设置上面的参数了,如下代码:

#include "mainwindow.h"
#include <QSettings>
#include <QApplication>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //配置参数
//    QCoreApplication::setOrganizationName("QQQQQ");
//    QCoreApplication::setOrganizationDomain("qqqqq.com");
//    QCoreApplication::setApplicationName("WWWWW");
//    QCoreApplication::setApplicationVersion("1.0.0");
    //写设置值
    QSettings *setting = new QSettings("QWSet.ini", QSettings::IniFormat);
    setting->setValue("/MySql/ip","127.0.0.1");
    setting->setValue("/MySql/port","3306");
    setting->setValue("/MySql/name","cch");
    setting->setValue("/MySql/password","cch");
    delete setting;

    MainWindow w;
    w.show();
    return a.exec();
}

        运行结果如下:

         当设置参数不加"/MySql/"的话,默认为"General",如下图:

         获取配置参数值同上。


版权声明:本文为object__原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。