2016-09-13 2 views
0

J'utilise QSettings pour stocker certains paramètres de mon application dans un fichier INI.Comment stocker des fichiers INI en utilisant QSettings sur OS X

Sur tout de Windows fonctionne très bien et mon fichier INI est stocké dans le même dossier de ma demande. Mais sur OS X Je ne trouve pas le fichier INI, et les paramètres ne sont pas chargés lorsque j'ouvre à nouveau mon application.

J'utilise le code suivant pour stocker les valeurs dans le fichier INI utilisant QSettings:

QSettings *settings = new QSettings("settings.ini", QSettings::IniFormat); 

settings->beginGroup("AppSettings"); 
settings->setValue("Language", language); 
settings->endGroup(); 

Est-ce que quelqu'un sait ce qui se passe?

Comment puis-je stocker des fichiers INI dans mon application Application.app sous OS X?

+0

Quel appel 'QSettings :: status()' renvoie? (Après avoir essayé d'écrire quelque chose). Etes-vous sûr que 'QSettings :: isWritable()' renvoie true? –

+0

J'ai essayé 'qDebug() << settings-> status();' et il a renvoyé 0. – KelvinS

+0

Lorsque j'exécute mon application à partir de Qt, 'QSettings :: isWritable()' renvoie true. Mais quand je le construis en utilisant 'macdeployqt MyApp.app' et que j'exécute MyApp.app, alors' QSettings :: isWritable() 'renvoie false. – KelvinS

Répondre

1

Je pense que le OS X ne donne pas les permissions pour éditer des fichiers dans le paquet d'applications.

je résolu le problème en changeant l'emplacement du fichier INI:

QString path = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation); 
QSettings *settings = new QSettings(path+"/settings.ini", QSettings::IniFormat); 

settings->beginGroup("AppSettings"); 
settings->setValue("Language", language); 
settings->endGroup(); 

Maintenant, le fichier INI sera enregistré dans l'emplacement QStandardPaths::ConfigLocation, que dans mon cas est /Users/.../Library/Preferences

Je résolu le problème basé sur ce topic.