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寫注冊表
- QSettings *reg = new QSettings("HKEY_CURRENT_USER\\Software\\yinhaifan",
- QSettings::NativeFormat);
- reg->setValue("registered",true);
- 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讀注冊表
- QSettings *reg = new QSettings("HKEY_CURRENT_USER\\Software\\yinhaifan",
- QSettings::NativeFormat);
- if (reg->value("registered",false).toBool())
- {
- QMessageBox::information(NULL,"information","registered");
- }
- 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文件:
- QSettings *ConfigIni = new QSettings("D:\\a.ini",QSettings::IniFormat,0);
- ConfigIni->setValue("/config/node1",ui->lineEdit->text());
- delete ConfigIni;
QSettings *ConfigIni = new QSettings("D:\\a.ini",QSettings::IniFormat,0); ConfigIni->setValue("/config/node1",ui->lineEdit->text()); delete ConfigIni;
4、用QSettings讀ini文件:
- QSettings *ConfigIni = new QSettings("D:\\a.ini",QSettings::IniFormat,0);
- ui->lineEdit_2->setText(ConfigIni->value("/config/node1","20").toString());
- 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();