`
mmdev
  • 浏览: 12913589 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

qt读取ini文件

 
阅读更多

qt读取ini文件


2010-08-26 10:53:30
 标签:ini文件qt   [推送到技术圈]
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。http://no001.blog.51cto.com/1142339/383314

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 =newQSettings("HKEY_CURRENT_USER//Software//yinhaifan",
  2. QSettings::NativeFormat);
  3. reg->setValue("registered",true);
  4. deletereg;

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 =newQSettings("HKEY_CURRENT_USER//Software//yinhaifan",
  2. QSettings::NativeFormat);
  3. if(reg->value("registered",false).toBool())
  4. {
  5. QMessageBox::information(NULL,"information","registered");
  6. }
  7. deletereg;

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 =newQSettings("D://a.ini",QSettings::IniFormat,0);
  2. ConfigIni->setValue("/config/node1",ui->lineEdit->text());
  3. deleteConfigIni;

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 =newQSettings("D://a.ini",QSettings::IniFormat,0);
  2. ui->lineEdit_2->setText(ConfigIni->value("/config/node1","20").toString());
  3. deleteConfigIni;

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();

本文出自 “今年我们二十三四” 博客,请务必保留此出处http://no001.blog.51cto.com/1142339/383314

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics