2017-04-16 3 views
0

J'ai un fichier .ini de cette forme:Qt4 lire tableau QSettings avec plusieurs valeurs

#init file: 

[files] 
fileAmount=2 

file1=string1, string2, 0 
file2=string1, string2, 1 



//cpp file: 
settings=new QSettings(QString(":resources/configuration"), QSettings::IniFormat); 

int n=set("files/fileAmount").toInt(); 

for(int i=1; i<=n; i++){ 
    QStringList list=settings->value("files/file"+QString::number(i)).toStringList(); 
    out<<list[0]<<" "<<list[1]<<" "<<list[2]<<endl; 
} 




//output: 
string1 string2 0 
string1 string2 1 

Est-il possible de définir comme séparateur pour les espaces blancs QStringList au lieu de komma?
i.e. ont ce fichier:

#init file: 

[files] 
fileAmount=2 

file1=string1 string2 0 
file2=string1 string2 1 

et obtenir le même résultat?

+0

S'il vous plaît, montrez du code, ce que vous avez déjà essayé. –

+0

et si ** string1 ** ou ** string2 ** ont des ** espaces ** à l'intérieur? – Redanium

Répondre

1

Ini fichier:

C: \ Users \ nom d'utilisateur \ AppData \ Roaming \ MyOrg \ MYAPP.INI

[files] 
file1=string1 string2 0 

Exemple de code pour l'espace délimité stringlist dans le fichier ini:

#include <QCoreApplication> 
#include <QStringList> 
#include <QSettings> 
#include <QDebug> 

void readSettings(); 
void writeSettings(); 

QStringList list; 

int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 

    QSettings::setDefaultFormat(QSettings::IniFormat); 
    qApp->setApplicationName("MyApp"); 
    qApp->setOrganizationName("MyOrg"); 

    readSettings(); 

    qDebug() << list; 

    writeSettings(); 

    return a.exec(); 
} 

void readSettings() 
{ 
    // read a space delimited value from QSettings string 
    // into a stringlist 
    QSettings s; 

    s.beginGroup("files"); 

    QString temp = s.value("file1","string1 string2 0").toString(); 
    list << temp.split(" "); 

    s.endGroup(); 
} 

void writeSettings() 
{ 
    // write a space delimited value from QStringList 
    QSettings s; 

    s.beginGroup("files"); 

    s.setValue("file1",list.join(" ")); 

    s.endGroup(); 
} 

Sortie:

("string1", "string2", "0") 

Espérons que cela aide.