From 91274c58b1772dfe38d3fcab291693141e822684 Mon Sep 17 00:00:00 2001 From: Daniel <49284193+dnlkrs@users.noreply.github.com> Date: 周五, 06 12月 2024 21:55:30 +0800 Subject: [PATCH] Fix WindowsRegistryKey for Qt 6.8.1 (#154) --- src/core/qwindowkit_windows.h | 30 ++++++++++++++++++++++++++++++ 1 files changed, 30 insertions(+), 0 deletions(-) diff --git a/src/core/qwindowkit_windows.h b/src/core/qwindowkit_windows.h index ca7c9c5..20f24ef 100644 --- a/src/core/qwindowkit_windows.h +++ b/src/core/qwindowkit_windows.h @@ -125,6 +125,9 @@ QString stringValue(QStringView subKey) const; QPair<DWORD, bool> dwordValue(QStringView subKey) const; + template<typename T> + std::optional<T> value(QStringView subKey) const; + private: HKEY m_key; @@ -134,6 +137,33 @@ inline bool WindowsRegistryKey::isValid() const { return m_key != nullptr; } + + template<> + inline std::optional<DWORD> WindowsRegistryKey::value(QStringView subKey) const { + const auto dv = dwordValue(subKey); + if (!dv.second) { + return {}; + } + return dv.first; + } +#elif QT_VERSION < QT_VERSION_CHECK(6, 8, 1) + class WindowsRegistryKey : public QWinRegistryKey { + public: + + explicit WindowsRegistryKey(HKEY parentHandle, QStringView subKey, REGSAM permissions = KEY_READ, REGSAM access = 0); + + template<typename T> + inline std::optional<T> value(QStringView subKey) const; + }; + + template<> + inline std::optional<DWORD> WindowsRegistryKey::value(QStringView subKey) const { + const auto dv = dwordValue(subKey); + if (!dv.second) { + return {}; + } + return dv.first; + } #else using WindowsRegistryKey = QWinRegistryKey; #endif -- Gitblit v1.9.1