配置文件在qt中被覆盖
我正在使用以下代码将数据写入配置文件配置文件在qt中被覆盖,qt,config,Qt,Config,我正在使用以下代码将数据写入配置文件 QSettings settings("/root/configFile.ini",QSettings::IniFormat); QString userName = lineEditUsername.text(); QString password = lineEditPassword.text(); QList<QString> listUsername; QList<QString> listP
QSettings settings("/root/configFile.ini",QSettings::IniFormat);
QString userName = lineEditUsername.text();
QString password = lineEditPassword.text();
QList<QString> listUsername;
QList<QString> listPassword;
settings.beginWriteArray("UserData");
for(i=0;i<listUsername.size();i++)
{
Qstring user = listUsername.at(i);
Qstring pass = listPassword.at(i);
settings.setArryIndex(i);
settings.setValue("Username",user);
settings.setValue("Password",pass);
}
settings.endArray();
}
QSettings设置(“/root/configFile.ini”,QSettings::ini格式);
QString用户名=lineEditUsername.text();
QString password=lineEditPassword.text();
QList列表用户名;
QList-listPassword;
settings.beginWriteArray(“用户数据”);
对于(i=0;i,在添加新条目之前,需要检索现有条目的数量。类似如下:
int size = settings.beginReadArray( "UserData" );
settings.endArray();
settings.beginWriteArray( "UserData" );
settings.setArrayIndex( size ); // Note: Maybe 'size - 1', not sure
// ...
settings.endArray();
[..]
QVariant v = settings.value("UserData");
QVariantMap map = v.value<QVariantMap>();
QMapIterator<QString, QVariant> i(map);
while (i.hasNext()) {
i.next();
QString user = i.key();
QString pass = i.value().toString();
}
将数组索引移到末尾,因此不再覆盖现有条目,而不是创建和维护数组和索引,我建议创建用户凭据映射并将其存储在设置文件中,如下所示:
QSettings settings("/root/configFile.ini", QSettings::IniFormat);
QString userName = lineEditUsername.text();
QString password = lineEditPassword.text();
QList<QString> listUsername;
QList<QString> listPassword;
//settings.beginWriteArray("UserData");
QVariantMap userDataMapping;
for(int i = 0; i < listUsername.size() ; i++)
{
QString user = listUsername.at(i);
QString pass = listPassword.at(i);
userDataMapping[user] = pass;
//settings.setArryIndex(i);
//settings.setValue("Username",user);
//settings.setValue("Password",pass);
}
// Store the mapping.
settings.setValue("UserData", userDataMapping);
//settings.endArray();
// ...
阅读设置时,请执行以下操作:
int size = settings.beginReadArray( "UserData" );
settings.endArray();
settings.beginWriteArray( "UserData" );
settings.setArrayIndex( size ); // Note: Maybe 'size - 1', not sure
// ...
settings.endArray();
[..]
QVariant v = settings.value("UserData");
QVariantMap map = v.value<QVariantMap>();
QMapIterator<QString, QVariant> i(map);
while (i.hasNext()) {
i.next();
QString user = i.key();
QString pass = i.value().toString();
}
[…]
QVariant v=settings.value(“用户数据”);
QVariantMap=v.value();
qmapiteratori(map);
while(i.hasNext()){
i、 next();
QString user=i.key();
QString pass=i.value().toString();
}
但是如果我有更多的数据要添加到配置文件中,比如他们的角色,我将无法正确添加?@user2548968,我不明白你的意思。请澄清你的问题。什么是“角色”以及你要添加什么样的数据?我尝试过使用这种方法。我想添加额外的功能,所以我又使用了一个QVariant,并对其进行了同样的操作它。然而,当阅读它时,却意外地完成了。角色就像假设它是一个学校数据库,并且一个学生正在登录,那么他将不得不将角色定义为学生,同样地,定义为教师和校长。因此,即使是这样,也必须通过配置文件。我将从组合框中将此值作为QString。@user2548968,我已经修复了e上面的代码:i.next()
应该在i.key()之前调用。