我想用QSettings来保存高分,但它不能正常工作。我在两个不同的文件中保存和读取这些值。
这是我负责将值添加到数组中的代码:
QSettings settings;
settings.beginWriteArray("results");
int size = settings.beginReadArray("results");
settings.setArrayIndex(size);
settings.setValue("result", "qwerty");和阅读:
QSettings settings;
QString tmp = "";
int size = settings.beginReadArray("results");
for(int i = 0; i < size; ++i)
{
settings.setArrayIndex(i);
tmp += settings.value("result").toString();
}
ui->label->setText(tmp);发布于 2013-04-27 21:44:28
我会这样做:
假设我们有两个函数,一个类的成员来加载和保存分数。要使用注册表,您必须指定应用程序名称和编辑器:
QSettings settings("<MyEditorName>","<myAppName>");
saveScores(settings);
loadScores(settings);要使用文件,您必须提供文件路径和格式:
QSettings settings("<filepath>",QSettings::iniFormat);
saveScores(settings);
loadScores(settings);根据您的代码和文档,成员函数将如下所示。这个类有一个分数矢量(QVector mScores)
保存分数的函数:
void myClass::saveScores(QSettings& iSettings)
{
iSettings.beginGroup("Scores");
iSettings.beginWriteArray("results");
for(int i=0; i<mScores.count();i++)
{
iSettings.setArrayIndex(i);
iSettings.setValue("result",mScores[i]);
}
iSettings.endArray();
iSettings.endGroup();
}函数来加载分数。
void myClass::loadScores(QSettings& iSettings)
{
iSettings.beginGroup("Scores");
int size = iSettings.beginReadArray("results");
mScores.resize(size);
for(int i=0;i<size;i++)
{
iSettings.setArrayIndex(i);
mScores[i] = iSettings->value("results").toInt();
}
iSettings.endArray();
iSettings.endGroup();
}我使用组在保存文件中提供更好的可见性,但您可以删除它们
发布于 2013-04-27 21:47:25
beginWriteArray()之后的beginReadArray()导致了这个问题。执行以下操作:
QSettings settings;
int size = settings.beginReadArray("results");
settings.endArray();
settings.beginWriteArray("results");
settings.setArrayIndex(size);
settings.setValue("result", "qwerty");
settings.endArray();注意:完成后需要调用endArray()。
发布于 2021-08-11 13:23:44
使用QSettings读取ini文件时,还会显示所需的ini文件\n格式alphabet.ini:
[A_SECTION]
AA=20
BB=40
CC=0
[B_SECTION]
DD=100
EE=270
FF=3000读取alphabet.ini的简单代码:
QSettings settings("C:\\Qt\\qtcreator-2.5.2\\testingProg\\alphabet.ini",QSettings::IniFormat);
settings.beginGroup("A_SECTION");
const QStringList AchildKeys = settings.childKeys();
QHash<QString, QString> Avalues;
foreach (const QString &childKey, AchildKeys)
{
Avalues.insert(childKey, settings.value(childKey).toString());
qDebug() << childKey << " : " <<settings.value(childKey).toString();
}
settings.endGroup();
qDebug() << ";
settings.beginGroup("B_SECTION");
const QStringList BchildKeys = settings.childKeys();
QHash<QString, QString> Bvalues;
foreach (const QString &childKey, BchildKeys)
{
Bvalues.insert(childKey, settings.value(childKey).toString());
qDebug() << childKey << " : " <<settings.value(childKey).toString();
}
settings.endGroup();输出:
"AA" : "20"
"BB" : "40"
"CC" : "0"
"DD" : "100"
"EE" : "270"
"FF" : "3000"https://stackoverflow.com/questions/16250994
复制相似问题