How to use QSettings correctly

I want to use QSettingsto save records, but it does not work properly. I save and read these values ​​in two different files.

This is my code responsible for adding values ​​to the array:

QSettings settings;
settings.beginWriteArray("results");
int size = settings.beginReadArray("results");
settings.setArrayIndex(size);
settings.setValue("result", "qwerty");

and readings:

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);
+5
source share
2 answers

I would do it like this:

say that we have two functions that are included in the load and save class for using the registry, you need to specify the name and editor of the application:

QSettings settings("<MyEditorName>","<myAppName>");
saveScores(&settings);
loadScores(&settings);

To use a file, you must specify the path and file format:

QSettings settings("<filepath>",QSettings::iniFormat);
saveScores(&settings);
loadScores(&settings);

from your code and documentation, the member function will be as follows the class calls the grading vector (QVector mScores)

To save points:

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

to load points

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

, ,

+7

beginReadArray() beginWriteArray() . :

QSettings settings;
int size = settings.beginReadArray("results");
settings.endArray();
settings.beginWriteArray("results");
settings.setArrayIndex(size);
settings.setValue("result", "qwerty");
settings.endArray();

, endArray() .

+2

All Articles