zoukankan      html  css  js  c++  java
  • QT INI 读写

    QSettings *ConfigIni = new QSettings(QSettings::Ini);
    ConfigIni->insertSearchPath(QSettings::Unix, "/home/Dawei");.//配置文件目录
    ConfigIni->writeEntry(QString::fromUtf8("/config./opt/参数1"), QString::fromUtf8("中文"));
    String aaa = ConfigIni->readEntry(QString::fromUtf8("/config./opt/参数1");
    delete ConfigIni;

    会在/home/Dawei目录下生成config.rc配置文件内容为
    [opt]
    参数1=中文

    ---------------------------------------

    QSettings settings("../etc/bpms.conf", QSettings::IniFormat, &app);
    QString db_hostname = settings.value("hostname").toString();
    QString db_database = settings.value("database").toString();
    QString db_username = settings.value("username").toString();
    QString db_password = settings.value("password").toString();
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName(db_hostname);
    db.setDatabaseName(db_database);
    db.setUserName(db_username);
    db.setPassword(db_password);

    ---------------------------------------------------------------

    需要#include <QSettings>

        只举几个简单的例子:

    1、用QSettings写注册表

    1. QSettings *reg = new QSettings("HKEY_CURRENT_USER\\Software\\yinhaifan",  
    2.                      QSettings::NativeFormat);  
    3.      reg->setValue("registered",true);  
    4.     delete reg;  

    QSettings *reg = new QSettings("HKEY_CURRENT_USER\\Software\\yinhaifan", QSettings::NativeFormat); reg->setValue("registered",true); delete reg;

    当然reg->setValue还可以写入字符串,整型之类的数据。

    比如reg->setValue("registered","yes");

    2、用QString读注册表

    1. QSettings *reg = new QSettings("HKEY_CURRENT_USER\\Software\\yinhaifan",  
    2.                  QSettings::NativeFormat);  
    3. if (reg->value("registered",false).toBool())  
    4. {  
    5.      QMessageBox::information(NULL,"information","registered");  
    6. }  
    7. delete reg;  

    QSettings *reg = new QSettings("HKEY_CURRENT_USER\\Software\\yinhaifan", QSettings::NativeFormat); if (reg->value("registered",false).toBool()) { QMessageBox::information(NULL,"information","registered"); } delete reg;

    还可以toInt(),toString()等。

    3、用QSettings写ini文件:

    1. QSettings *ConfigIni = new QSettings("D:\\a.ini",QSettings::IniFormat,0);  
    2. ConfigIni->setValue("/config/node1",ui->lineEdit->text());  
    3. delete ConfigIni;  

    QSettings *ConfigIni = new QSettings("D:\\a.ini",QSettings::IniFormat,0); ConfigIni->setValue("/config/node1",ui->lineEdit->text()); delete ConfigIni;

    4、用QSettings读ini文件:

    1. QSettings *ConfigIni = new QSettings("D:\\a.ini",QSettings::IniFormat,0);  
    2. ui->lineEdit_2->setText(ConfigIni->value("/config/node1","20").toString());  
    3. delete ConfigIni;  

    QSettings *ConfigIni = new QSettings("D:\\a.ini",QSettings::IniFormat,0); ui->lineEdit_2->setText(ConfigIni->value("/config/node1","20").toString()); delete ConfigIni;

       这几段代码都是在Qt Creator里面写的,所以用ui->lineEdit*->text()和ui->lineEdit*->setText()做输入和输出了。

       在文档中的QSettings Class Reference部分讲的很清楚

    ---------------------------------------------------------------------

    m_nDevNo = nDevNo;
    QString strTemp;
    QString xmlPath = CSC_APP.m_strWorkPath + "/InitInfo.ini";
    QSettings *mySetting = new QSettings(xmlPath,QSettings::IniFormat);

     foreach (QString group, mySetting->childGroups()) 
    {
    mySetting->beginGroup(group);
    foreach (QString key, mySetting->childKeys()) 
    {
    QTextCodec *codec=QTextCodec::codecForName("GBK");
    QString outStr = codec->toUnicode(key.toLatin1());
    if (outStr == "自描述语言")
    {
    if ( mySetting->value(key,"0").toInt() == 1)
    ui.SelfDspLgu->setCurrentIndex(1);
    else
    ui.SelfDspLgu->setCurrentIndex(0);
    }
    if (outStr == "工作语言")
    {
    if ( mySetting->value(key,"0").toInt() == 1)
    ui.WorkLgu->setCurrentIndex(1);
    else
    ui.WorkLgu->setCurrentIndex(0);
    }

       if (outStr == "离线工作")
    {
    if ( mySetting->value(key,"0").toInt() == 1)
    ui.WorkMode->setCurrentIndex(1);
    else
    ui.WorkMode->setCurrentIndex(0);
    }

       if (outStr == "召唤自描述方式")
    {
    if ( mySetting->value(key,"0").toInt() == 1)
    ui.SelfDspSource->setCurrentIndex(1);
    else
    ui.SelfDspSource->setCurrentIndex(0);
    }

       if (outStr == "组播地址")
    {
    strTemp = mySetting->value(key,"236.8.8.8").toString();
    ui.GrpAddress->setText(strTemp);
    }

       if (outStr == "接收端口号")
    {
    strTemp = mySetting->value("接收端口号","2000").toString();
    ui.RecPort->setText(strTemp);
    }

       if (outStr == "发送端口号")
    {
    strTemp = mySetting->value("发送端口号","2001").toString();
    ui.TargetPort->setText(strTemp);
    }

       if (outStr == "启用本机地址")
    {
    strTemp = mySetting->value(key,"0").toString();
    }
    if (outStr == "本机地址")
    {
    strTemp = mySetting->value(key,"0").toString();
    ui.LocalIp->setText(strTemp);
    }
    if (outStr == "装置名称")
    {
    strTemp = mySetting->value(key,"0").toString();
    ui.EqpName->setText(strTemp);
    }
    if (outStr == "装置地址")
    {
    strTemp = mySetting->value(key,"0").toString();
    ui.EqpAddress->setText(strTemp);
    }

       if (outStr == "装置IP")
    {
    strTemp = mySetting->value(key,"0").toString();
    ui.TargetIp->setText(strTemp);
    }
    }
    mySetting->endGroup();

  • 相关阅读:
    nodejs gulp如何获取参数
    nodejs 获取当前路径的方法
    gulp 如何排除文件和文件夹
    小技巧css解决移动端ios不兼容position:fixed属性,无需插件
    代码协议相关
    zen-coding
    directive 实例讲解
    angular api 地址
    一步一步搭建hibernate4+ spring+ struts2
    华为荣耀6 H60-L02/L12(联通版)救砖包【适用于无限重启】
  • 原文地址:https://www.cnblogs.com/qq78292959/p/2544397.html
Copyright © 2011-2022 走看看