0

私のアプリケーションの Mac バージョンは、QSettings を使用して保存および復元したフルスクリーンと通常のレイアウトを壊し始めました。私のアプリケーションの古いバージョンでさえ、今では顧客のために再生されています。

興味深い行を含むバグレポートを見つけたとき、似たようなものをグーグルで検索していました。

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

コンピュータの plist または Windows レジストリに保存するとき、この fromLocal8bit() でデータをフォーマットする必要がありますか?

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

4

1 に答える 1

1

エンコードされるのはデータであり、文字通りの「状態」です。QByteArray または QString を使用すると、値は適切にエンコードおよびデコードされます。QString::fromLocal8Bit() 部分は、ソース ファイルの文字列リテラルを Unicode 文字列に変換するためのものです。通常、UTF-8 などの他のエンコーディングはすべてのコンパイラ、特に MSVC では機能しないため、ソース ファイルでは ASCII に固執することをお勧めします。

リテラルを QString に変換するには、QLatin1String を使用することをお勧めします。

QLatin1String("state")

fromLocal8Bit() は、厳密に言えば false です。ローカルの 8 ビット エンコーディングは、リテラルが由来するソース ファイルのエンコーディングとは何の関係もないからです。ただし、「状態」にはASCII以外の文字が含まれていないため、とにかく問題になりません。

于 2011-04-08T11:29:24.170 に答える