私がやろうとしているのは、レジストリキー(NOT VALUE、KEY)がレジストリに存在するかどうかを確認することです。それを確認する方法が見つかりません。
アイディア?
QSettings を使用すると、キーの親を開き、そのキーのリストを取得できます。関数childGroups()
を使用して、キーのリストを取得します。qt の「グループ」は Windows レジストリのキーのようです。
これは、キーが存在するかどうかを確認する唯一の方法です。このコードでは、キー「SearchedKey」を探します。
QSettings settings(
"HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\App Paths",
QSettings::NativeFormat
);
if (settings.childGroups().contains("SearchedKey", Qt::CaseInsensitive))
std::cout << "Key exists" << std::endl;
else
std::cout << "Key doesn't exist" << std::endl;
編集:
2011年に私は書いた:
レジストリはWindowsの概念であり、Qtのクロスプラットフォームの概念に適合していません。WindowsAPIまたはC++ラッパーを使用する必要があります。
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724875(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/xka57xy4(v=vs.80).aspx
アプリケーションが独自の設定を保存および復元するためのより抽象的なニーズがある場合、Qtにはと呼ばれるもののクロスプラットフォーム設計があります
QSettings
。設定とプラットフォームの性質に応じて、これらをレジストリまたはファイルなどに保存します。
しかし、@ mateuszbの回答では、次を使用するとQSettingsがWindowsキーを開くことができるようになっていますQSettings::NativeFormat
。
http://doc.qt.io/qt-5/qsettings.html#Format-enum
「HKEY_LOCAL_MACHINE」のようなものをソースにハードコーディングしている場合でも、Qtが意図する方法でプラットフォーム間でコードを抽象化するという精神を持っていないことをお勧めします。しかし、明らかに(少なくとも最近のQtバージョンでは)Qtを掘り下げて、WindowsレジストリAPIを呼び出すことなくこれを行うことができます。