Question

J'écris une application Qt et a besoin de stocker les paramètres du programme. Je veux qu'ils soient facilement modifiables par les utilisateurs non avancés encore être suffisamment souple pour les utilisateurs avancés (ainsi permettre facilement l'édition automatisée via d'autres programmes, scripts, peu importe). QSettings fournit deux formats, le format natif, qui est pour Windows registre et le format INI, qui est natif pour la plupart des autres plates-formes. INI est très bien, mais en voyant @QString (...) ou d'autres choses Qt il n'y a pas vraiment lisible et est un peu sujette à erreur.

Le registre n'est pas génial non plus. Il n'a pas été conçu pour être sali avec et donc pas tout à fait bon pour le montage ou l'utilisation avancée; il ne résout le problème de la synchronisation entre les threads et plusieurs objets QSettings (donc je ne nettoie pas tout dehors, si je peux utiliser un objet global, protégé par un casier de lecture-écriture). Je regarde XML, mais il est assez sacrément bavard et il ne nécessite l'écriture d'un format QSettings (pas vraiment une question), mais très flexible.

Je sais que d'autres solutions de rechange à XML existent mais je ne suis pas vraiment familier avec eux; Je ne veux pas écrire un analyseur syntaxique, exception pour mon propre format final, pas pour la chose base.

Mise à jour - Note: Je ne vais pas contourner QSettings du tout, je me contenterai d'écrire un format pour elle - qui ressemble il est à seulement deux pointeurs de fonction (pour une lecture et pour une fonction d'écriture) passé à une fonction statique et je peux utiliser mon format.

Mise à jour 2: Je suis aussi inquiet sur les serveurs Linux, qui n'ont généralement pas une interface graphique .. Je veux que les gens soient en mesure de modifier la configuration facilement à partir du serveur via nano ou quelque chose de similaire , sans utiliser le gestionnaire (oui, je vais avoir un serveur démon et un gestionnaire de GUI à distance).

Était-ce utile?

La solution

Si, pour une raison quelconque, vous finissez par passer par QSettings et compte tenu de XML pour votre fichier de configuration, je vous suggère d'aller consulter JSON ou CJMS, selon la façon dont vous aimez le libs disponible.

En sidenote, si vous ne comptez pas avoir d'utilisateurs en modifier le fichier manuellement, il suffit de choisir ce qui est plus facile pour vous (QSettings?) Et de passer avec votre vie, puisque le choix du format ne sera pas question d'un seul bit (har har).

Autres conseils

Vous pouvez utiliser la classe QSettings pour y parvenir. Il est une classe d'abstraction qui permettent aux applications de stocker vos paramètres afin de les récupérer au prochain lancement.

Enregistrer les paramètres:

QSettings settings("ValueName",  "Value");

Paramètres Lire:

QString v = settings.value("ValueName");

Je voudrais commencer par faire les QSettings via les fichiers .ini, et si vous vous retrouvez avec beaucoup de problèmes avec elle. S'il n'y a pas de problèmes, alors il n'y a pas besoin d'aller pour une solution XML. Si vous finissez par vouloir la solution XML, vous pouvez (comme indiqué) ajouter un formatter pour les objets QSettings.

Une autre façon de regarder verbosité est la robustesse du contenu. Si pour une raison quelconque (une particule alpha bombardant le disque, ce qui seul bit à retourner), vous pouvez toujours aller là-bas et faire la correction d'erreur nécessaire ... donc il y a des avantages, mais aussi les coûts associés à ... avec un fichier binaire, une seule erreur binaire signifie que les données est complètement perdu

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top