2011-04-08 3 views
0

La version mac de mon application vient de commencer à casser son plein écran et les mises en page normales que je sauvegarde et restaure en utilisant QSettings. Même les anciennes versions de mon application jouent maintenant pour mes clients.Existe-t-il un moyen sûr de stocker des données dans QSettings dans un environnement multiplateforme?

Je viens de googler quelque chose de similaire lorsque j'ai trouvé un rapport de bogue qui contenait une ligne intéressante:

QSettings s; 
restoreState(s.value(QString::fromLocal8Bit("state")).toByteArray()); 

Lors de l'enregistrement sur les ordinateurs plist registre de ou Windows dois-je formater les données dans cette fromLocal8Bit ()?

http://bugreports.qt-project.org/browse/QTBUG-8631
http://bugreports.qt-project.org/secure/attachment/13400/main.cpp

Répondre

1

Il est des données qui est codé, il est juste le "état" littéral. Les valeurs sont correctement codées et décodées si vous utilisez QByteArray ou QString . La partie QString :: fromLocal8Bit() sert à convertir le littéral de chaîne du fichier source en chaîne unicode. C'est une bonne pratique de s'en tenir à l'ASCII dans les fichiers sources, car les autres encodages tels que UTF-8 ne fonctionnent généralement pas avec tous les compilateurs, en particulier MSVC.

Pour convertir littéraux QString Je suggère d'utiliser QLatin1String:

QLatin1String("state") 

fromLocal8Bit() est à proprement parler faux, comme l'encodage de 8bit locale n'a rien à voir avec le fichier source de codage, où le littéral vient de . Mais comme "state" ne contient aucun caractère non-ascii, cela ne devrait pas poser de problème.

Questions connexes