2014-07-04 5 views
0

Je travaille avec la fonction QSettings. Une fois correctement définie dans le fichier .h variablesQSetting trouble

QSettings *settings; 

dans le constructeur (cpp fichier.) I définir la variable de cette manière, d'obtenir un chemin comme d'étirage/d'entrée/cellules/Largeur

settings = new QSettings("MySoft", "Star Runner"); 
settings->beginGroup("Draw"); 
settings->beginGroup("Input"); 
settings->beginGroup("Cells"); 
settings->setValue("width", 80); 
settings->endGroup(); 
settings->endGroup(); 
settings->endGroup(); 

le problème est que la valeur largeur est correctement réglée sur 80 seulement si au cours de la déclaration du nom de l'organisation est réglé sur « MySoft »: si vous attribuez une autre valeur (par exemple, « toto »), faire un test via

qDebug() << settings->value("width", "").toString(); 

le La touche de largeur n'a pas de valeur

+0

Ne 'Paramètres-> Valeur ("Draw/entrée/cellules/largeur", "")' une valeur? – PrisonMonkeys

+0

Le nom de l'organisation et de l'application lors de l'enregistrement et de la restauration d'une valeur pour une clé doit être le même. Vous ne devez pas vous attendre à obtenir la valeur enregistrée dans un autre nom d'organisation. – Nejat

+0

'QSettings' encapsule l'utilisation du registre sur les fichiers windows et ini sous Linux. Fournir 'organisation' et' application' définit où placer les entrées de registre ou les fichiers ini. Comportement ainsi décrit est attendu. –

Répondre

0

Vous devez également démarrer et terminer les groupes lors de la lecture de la valeur. Donc, vous pouvez soit essayer

qDebug() << settings->value("Draw/Input/Cells/width", "").toString(); 

ou

settings->beginGroup("Draw"); 
settings->beginGroup("Input"); 
settings->beginGroup("Cells"); 
qDebug() << settings->value("width", "").toString(); 
settings->endGroup(); 
settings->endGroup(); 
settings->endGroup(); 
+0

Lire ma question. L'est dans le nom de l'organisation – user3713179

+0

De votre question, il n'est pas clair où (dans le code) la ligne de test de débogage est effectuée. Est-ce dans le constructeur juste après avoir écrit la valeur (toujours dans le groupe imbriqué)? Si non, veuillez poster vos fonctions complètes pour clarifier votre question. – PrisonMonkeys