2012-10-17 4 views
0

J'ai une application Qt qui nécessite la capacité de charger à partir de plusieurs fichiers de paramètres à se comporter d'une manière distincte. Par exemple permet de dire que mon application peut supporter plusieurs variations, var1, var2 Var3, ... Un de mes entrées de menu me permet de charger les paramètres. Actuellement, je le fais en utilisant un objet QSettings et cela fonctionne bien. Mais maintenant je veux mettre en œuvre une variation différente. Au lieu de définir manuellement 20 paramètres ou plus, je voudrais charger à partir d'un fichier de paramètres préconfigurés.Comment pourrais-je utiliser QSettings pour charger différentes configurations

QSettings ne me permet pas de changer la source, pour autant que je peux dire. J'ai regardé la méthode statique QSettings :: setPath mais cela ne peut être fait qu'une fois avant d'instancier l'objet QSettings.

Mon espoir est de créer des façons: 1 - Charger les valeurs par défaut d'usine 2 - Enregistrer un utilisateur paramètres fichier avec un nom d'utilisateur spécifié 3 - Rappel d'un fichier de paramètres utilisateur par son nom.

je préférerais ne pas avoir à réécrire QSettings pour répondre à mes besoins, si possible.

Répondre

0

Avez-vous essayé d'accéder QSettings comme un fichier INI? Il vous permet de configurer l'emplacement du fichier INI

QSettings settings("/home/petra/misc/myapp.ini", 
        QSettings::IniFormat); 
+0

Le problème est une fois que vous chargez les paramètres, il n'y a pas moyen facile de charger ultérieurement un fichier de paramètres différents. – pklemm

+0

Pourquoi pas? Tout comme dans la réponse de Dave Mateer. –

4

L'un des QSettings constructeurs prend un nom de fichier:

QSettings::QSettings (const QString& fileName, 
         Format format, 
         QObject *parent = 0); 

utiliser juste que pour faire autant QSettings cas que vous avez besoin:

QSettings s1("path1.ini", QSettings::IniFormat); 
QSettings s2("path2.ini", QSettings::IniFormat); 

Si vous avez besoin de copier entre eux, vous pouvez parcourir QSettings::allKeys() et obtenir les valeurs.

Questions connexes