7

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();

私はアプリを再起動し、私が持っている initialize() メソッド内で:

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

ユーザー名とパスワードの変数は、QSettings から読み取られません。
同じコードが Windows でも機能しています。
ありがとうございました

4

6 に答える 6

6

私も同様の問題に遭遇し、2つのことを行う必要があることがわかりました。

  1. 設定ファイルへのパスを指定する必要があります
  2. QSettings::sync() は、設定が変更されるたびに明示的に呼び出す必要があります。

したがって、Windowsではこれが機能していました:

QSettings settings("settings.ini", QSettings::IniFormat);
settings.setValue(GRID_ENABLED, enabled);

Android では、次のコードを使用する必要があります。

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

おそらく「sdcard」を使用するだけでは不十分であり、他のディレクトリを使用する必要があります。

于 2013-10-16T12:14:29.547 に答える
0

上記と同様の問題がありましたが、すべて正常に機能することがわかりました。つまり、引数なしの単純な QSettings オブジェクトで機能しました。

ただし、Qt Creator からアプリケーションを再デプロイするたびに、設定ファイルが破棄され、QSettings が機能しないという結論に至りました。

Bogdan 自身によると、この問題は Qt Creator 3.2 で修正されているはずです。

于 2014-04-04T07:03:21.930 に答える