問題タブ [qsettings]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
375 参照

c++ - QSettings を使用した XML へのカスタム クラス

QSettings を使用してカスタム クラスを XML に保存したいと思います。しかし、私は常に構造体メンバーなしで XML を取得します。

私はこの出力を得る:

XML は次のようになります。

QSettings を使用してカスタム クラスの構造体メンバーを XML に保存するにはどうすればよいですか?

更新:申し訳ありませんが、言及するのを忘れていましたが、これは Qt4 で行われるはずです。

0 投票する
2 に答える
1174 参照

python - Qt - pyside - saveGeometry() saveState()

私は Qt プログラムを持っており、現在 Qsettings.saveGeometry() および Qsettings.saveState() 関数を使用して、ユーザーが前のセッションで設定したレイアウトをプログラムが復元できるようにしています。ただし、すべてのジオメトリが保存されるわけではなく、メイン ウィンドウのみが保存され、子は保存されません。特に、ドッキングされたウィンドウのフローティング位置と、ドッキングされたウィンドウ内のテーブルの列幅は保存されません。

このスレッドは答えを提供しようとしているようです (ただし、Python ではなく C++ で): http://www.qtforum.org/article/38362/save-geometry-of-all-widgets-recursively.html

私は Python でコーディングしていますが、私の C++ はあまり良くないので、上記のリンクの例を完全にはたどることができません。

そのアプローチが機能するかどうかは誰にもわかりませんか?

一般に、Qsettings を使用して、ドッキングされたウィンドウのフローティング位置とテーブルの列幅を保存することは可能ですか?

誰かがpython/pysideベースのソリューションを提案できますか?

どうもありがとう。

ロン

0 投票する
1 に答える
2029 参照

android - QSettings の値が変更されたときのイベント?

設定の変更をアプリケーションに即座に投影する正確な方法がわかりません。QEvent1 つの方法は、を使用して一部をリッスンすることeventFilterです。

それはオプションですか?そのようなイベントはありますか?イベントをリッスンするのが悪い考えである場合、正しい解決策は何ですか?

0 投票する
1 に答える
197 参照

qt - QTextStream による逆シリアル化?

必要性: 標準の Qt 型の構造体を、人間が読み取り可能/編集可能なファイルとの間で読み書きします。

試した:QSettings。それを機能させるのはかなり簡単でした。問題: QSettings は定期的に、および dtor で QSettings::sync() を自動的に呼び出します。設定ファイルが要求に応じてのみ更新され、実行時のデータ構造が要求に応じてのみ変更されるようにする必要があります。

試した:QDataStream。問題: 人間が読み取ったり編集したりできない。

試した: 標準の readline と QString::toInt() などを使用した手動のシリアル化と逆シリアル化。QSettings がサポートする型をサポートする必要がありますが、その QString には「toFoo()」メソッドがありません。この方法は、はるかに多くのコーディングになります。

QSettings を使用せずに人間が読めるデータをシリアル化および逆シリアル化する方法はありますか? それに関するすべてが要件に反しています。ファイルの名前は異なるはずです。アクセスは別の方法で制御する必要があります。

sync() を単にブロックする方法があれば、おそらく十分でしょう。おそらく、他のことは何でも回避できます。私に最も問題を与えるのは「同期」です。

0 投票する
1 に答える
478 参照

c++ - Qt: C++: ポップアップ ダイアログ ボックスのジオメトリを復元する

ポップアップ ダイアログ ボックスのジオメトリを保存し、ポップアップ ダイアログ ボックスを呼び出すたびに復元しようとしています (アプリケーションがまだ実行されている間)。

しかし、私はそれを理解できませんでした。

コードはエラーなしで実行されます。ただし、ポップアップのウィンドウは、開くたびに垂直方向に位置を変更し続けます。アプリケーション全体を閉じてから再度開かない限り、ポップアップが画面中央の元の位置に移動することはありません。

QcloseEventQSettingsおよびを使用しようとしていますrestoreGeometry。しかし、何かが正しくありません。助けてください。

MainWindow.cppは次のとおりです。

AddMembersDialog.cppは次のとおりです。

0 投票する
1 に答える
969 参照

c++ - Unix Qt 5.6 QSettings が QSettings::SystemScope 構成ファイルを見つけられない

Qt バグ レポートへのリンク: QTBUG-53313

Qt 5.5 から Qt 5.6 に移行すると、システム スコープで QSettings 構成ファイルが見つからないというQSettingsの問題が発生します。以下の main.cpp では、QSettings がさまざまな方法で初期化され、そのプロパティが照会されます。

ASSUMED_USER_CONFIGファイルがシステムに存在しません

ASSUMED_SYSTEM_CONFIGファイルはシステム上に存在し、次のものが含まれています。

Qt 5.5 でコンパイルすると、プログラムは以下を返します。

Qt 5.6 でコンパイルすると、プログラムは以下を返します。

ここにはいくつかの問題があります。

Qt 5.5 でコンパイルすると、すべてのケース (a、b、c、d) で設定 'filename' が期待どおりに構築されます。ケース「a」および「b」は、ASSUMED_USER_CONFIG ファイルが存在しないため、ASSUMED_SYSTEM_CONFIG ファイルにフォールバックしています。このため、「the_value」は設定ファイルから正しく取得されます。

ただし、Qt 5.6 でコンパイルすると、「c」および「d」の場合、設定「ファイル名」が正しく構築されないようです (正しいパスが「/home/user/Qt5.6/5.6/gcc_64」に追加されます)。 . このため、設定ファイルから「the_value」を取得できません。

Qt Creator のデフォルトの環境変数を上書きしていません。Qt 5.6 は Qt Maintenance ツールによって自動的にインストールされました。環境変数 XDG_CONFIG_HOME を使用して QSettings::SystemScope ファイルへの絶対パスを設定できることは承知していますが、これを行う必要はないと思います。

主な問題をもう一度述べると、QSettings で ASSUMED_SYSTEM_CONFIG ファイル (QSettings::SystemScope) を使用するにはどうすればよいですか?

他の誰かがこれに反対しましたか?これを2台の別々のマシンでテストしました。

0 投票する
0 に答える
259 参照

qt - QVariant での ASSERT 失敗:「不明な型を構築しようとしています」、ファイル kernel\qvariant.cpp、行 980

Qt 5.5.0

GUI アプリケーションの 1 つをコンソールに切り替えています。コンソール モードでの QSettings オブジェクトの開始に問題があります。

これは gui のコードです。正常に動作します。

これはコンソール用のコードです

コンソール コードは Setts->value の呼び出しに失敗し、次のエラーが表示されます: QVariant での ASSERT 失敗: "不明な型を構築しようとしています"、ファイル kernel\qvariant.cpp、行 980。

デバッグ中に、クラス コンストラクターに入ると、「QSettings」値の仮想テーブルのリンカー シンボルが見つからないという警告に気付きました。

ファイルは存在しますが、QSettings はコンストラクターの値を初期化しません。Setts->contains("Localization") を呼び出すと、同じエラーが発生します。しかし、コンストラクターの後に Setts->setValue を使用すると、正常に動作します。コンストラクターで QSettings を初期化するにはどうすればよいですか?

設定.ini

0 投票する
1 に答える
53 参照

c++ - Qsettings は一度だけ値を保存できますか?

Qsetting を使用して、最後に使用した値を保存しています。私のコードは 1 つのフィールドに対してのみ機能します。つまり、2回目に同じロジックを適用しているときに1回しか機能しないということです。

ファイルio.cpp

ファイルio.h

main.cpp