問題が見えません。
2 つの基本的なオプションがあります。
- オブジェクトを一度作成し、それをすべてのウィンドウに渡します: 簡単にするために、設定オブジェクトのタイプが Qsettings であると仮定します。また、アプリケーションがマルチスレッド化されていないと仮定しましょう。このオブジェクトをメイン関数内で作成し、作成するすべてのウィンドウにパラメーターとして渡します。すべてのウィンドウは
#include <QSettings>
、それにアクセスする方法を知っています。独自の設定クラスがある場合も同様です。インターフェイスは独自のヘッダーにあり、実装は独自の cpp にあります。それを 1 つ作成し、すべてのウィンドウに渡します。
- コメントで述べたように、シングルトンを使用することもできます。関数内で静的に宣言されたのと同じインスタンスを返す設定クラスの静的関数を作成するだけです。このように:
class Settings
{
public:
static Settings & TheSettings()
{
static Settings theSettings_;
return theSettings_;
}
// Here go all methods for accessing the data
// You will also want:
~Settings();
Settings(const Settings &);
Settings & operator=(const Settings &);
// If you are using c++11 you may also want to add move constructor and assignment.
// Or you can just use the defaults for all the above if all your private members can destruct themselves
private:
Settings();
};
設定オブジェクトとして QSettings を使用した上記は次のとおりです。
class Settings
{
public:
static QSettings & TheSettings()
{
static QSettings theSettings_;
return theSettings_;
}
private:
Settings();
Settings(const Settings &);
Settings & operator=(const Settigns &);
};
これがあなたを正しい軌道に乗せることを願っています
PS。マルチスレッド アプリの場合、Settings オブジェクト内のすべての内部データがクリティカル セクション (またはミューテックス保護) 内でアクセスされるようにします。
PPS。Miki がコメントで述べたように、QSettings はスレッド セーフであるため、クリティカル セクションでアクセスをラップする必要がないことに注意してください。ただし、別の基本ストレージ (ファイル、別のコンテナーなど) を使用する場合は、おそらく必要になります。