QSettings在Android下的Qt上不能正常工作

Luc*_*ian 7 qt android qsettings

我想在我在Android上运行的qt应用程序中保存一些用户凭据.我这样使用QSettings:

QString appPath = QCoreApplication::applicationDirPath()+QLatin1Char('/');
set = new QSettings(appPath+"test",
                   QSettings::NativeFormat);
set->setValue ( "user/username", "NameOfTheUser" );
set->setValue ( "user/password", "UserPassword" );
set->sync();
Run Code Online (Sandbox Code Playgroud)

我重新启动应用程序并在我的initialize()方法中:

QString username(set->value("user/username",
                                           ( QVariant ) tr ( "defaultUser" ) ).toString());
QString password(set->value("user/password",
                                           ( QVariant ) tr ( "defaultPass" ) ).toString());
Run Code Online (Sandbox Code Playgroud)

不会从QSettings中读取用户名和密码变量.
相同的代码在Windows上运行.
谢谢

小智 6

我也遇到了类似的问题,发现应该做两件事:

  1. 应指定设置文件的路径
  2. 每次设置更改后都应显式调用QSettings :: sync().

所以在Windows上我有这个工作:

QSettings settings("settings.ini", QSettings::IniFormat);
settings.setValue(GRID_ENABLED, enabled);
Run Code Online (Sandbox Code Playgroud)

在Android上我必须使用以下代码:

QSettings settings("/sdcard/settings.ini", QSettings::NativeFormat); //can be IniFormat, no difference
settings.setValue(GRID_ENABLED, enabled);
settings.sync();
Run Code Online (Sandbox Code Playgroud)

可能使用"sdcard"还不够好,你应该使用其他目录.