5

Qt アプリケーションを作成しており、プログラムの設定を保存する必要があります。上級ユーザー以外でも簡単に編集できるようにしつつ、上級ユーザーにも柔軟に対応できるようにしたい (したがって、他のプログラムやスクリプトなどを介して簡単に自動編集できるようにする)。QSettings は、Windows 用のネイティブ形式であるレジストリと、他のほとんどのプラットフォーム用のネイティブ形式である INI 形式の 2 つの形式を提供します。INI は問題ありませんが、そこに @QString(...) やその他の Qt が表示されると、実際には判読できず、エラーが発生しやすくなります。

レジストリも良くありません。めちゃくちゃになるように設計されていないため、編集や高度な使用には適していません。これにより、スレッドと複数の QSettings オブジェクト間の同期の問題が解決されます (読み取り/書き込みロッカーで保護された 1 つのグローバル オブジェクトを使用することはできますが、すべてを消去するわけではありません)。私は XML を見ていますが、非常に冗長であり、QSettings 形式を記述する必要があります (実際には問題ではありません) が、非常に柔軟です。

XML の他の代替手段が存在することは知っていますが、あまりよく知りません。基本的なものではなく、私自身の最終的な形式を除いて、私は確かにパーサーを書きたくありません。

更新 - 注: QSettings をまったくバイパスしません。そのための形式を記述するだけです。これは、静的関数に渡された 2 つの関数ポインター (読み取り関数と書き込み関数) のように見えます。私のフォーマット。

更新 2:通常は GUI を持たない Linux サーバーについても心配しています。マネージャーを使用せずに、nano などを介してサーバーから簡単に構成を編集できるようにしたいと考えています (はい、私はそうします)。デーモン サーバーとリモート GUI マネージャーが必要です)。

4

4 に答える 4

3

You can use the QSettings class to achieve this. It's an abstraction class that allow your applications to store its settings in order to retrieve them at next launch.

Save settings:

QSettings settings("ValueName",  "Value");

Read settings:

QString v = settings.value("ValueName");
于 2009-12-02T09:33:43.050 に答える
1

.ini ファイルを介して QSettings を実行することから始めて、多くの問題が発生するかどうかを確認します。問題がなければ、XML ソリューションを使用する必要はありません。XML ソリューションが必要になった場合は、(前述のように) QSettings オブジェクトのフォーマッターを追加できます。

于 2009-12-02T00:05:33.083 に答える
1

なんらかの理由で構成ファイルに XML をバイパスしQSettingsて検討することになった場合は、利用可能なライブラリの好みに応じて、JSON または YAST を検討することをお勧めします。

補足として、ユーザーにファイルを手動で編集させるつもりがない場合は、自分にとって最も簡単なものを選択して ( QSettings?)、自分の人生を続けてください。フォーマットの選択は少しも問題にならないからです (har har )。

于 2009-12-02T09:54:06.603 に答える
0

冗長性を調べるもう 1 つの方法は、コンテンツの堅牢性です。何らかの理由(アルファ粒子がディスクに衝突し、単一ビットが反転する)である場合でも、そこに行って必要なエラー修正を行うことができます...したがって、利点がありますが、それに関連するコストもあります...バイナリ ファイル。シングル ビット エラーは、データが完全に失われたことを意味します。

于 2009-12-01T20:39:27.787 に答える