6
A
回答
0
編輯:
2011年我寫道:
註冊表是Windows的概念,不適合Qt的跨平臺的概念。您將不得不使用Windows API或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::NativeFormat
QSettings可以打開Windows鍵:
http://doc.qt.io/qt-5/qsettings.html#Format-enum
我還是建議,如果你是硬編碼像「HKEY_LOCAL_MACHINE」到你的源代碼中,你並不是真正在按照Qt的意圖在各個平臺上抽象你的代碼。但是你顯然可以(至少在最近的Qt版本中)不需要在Qt下挖掘並調用Windows註冊表API。
14
使用QSettings,您可以打開密鑰的父級並檢索其密鑰列表。使用功能childGroups()
獲取密鑰列表。似乎qt中的「groups」是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;
相關問題
- 1. 檢查是否存在註冊表項
- 2. 檢查一個註冊表項是否存在python
- 3. 檢查是否存在與python的註冊表項
- 4. vb.net檢查是否存在註冊表子項值
- 5. 如何使用C#檢查註冊表值是否存在?
- 6. 測試是否存在註冊表值
- 7. 檢查註冊表項是否存在總是失敗
- 8. 如何檢查註冊表項是否存在
- 9. 如何檢查註冊表項是否存在?
- 10. 檢查卷是否存在 - 通過註冊表
- 11. Java RMI - 檢查註冊表是否存在
- 12. 檢查遠程機器中是否存在註冊表路徑
- 13. jsoup檢查一個表是否存在
- 14. 檢查值是否在另一個表
- 15. 在.bat上檢查註冊表值
- 16. 檢查是否存在,是否存在,是否爲某個值
- 17. 檢查一個值是否存在於多個表中SQL Server
- 18. 如何檢查tlb文件是否使用C++在註冊表中註冊?
- 19. 您是否可以在註冊時編碼Firebase以檢查註冊表中的兩個密碼是否匹配?
- 20. 檢查Oracle表是否與Puppet存在
- 21. 檢查PostgreSQL表是否存在與Npgsql
- 22. 檢查員工ID是否存在批准註冊
- 23. PHP註冊信息:檢查電子郵件是否存在
- 24. MS SQL Server檢查是否存在已註冊的程序集
- 25. Django註冊如何檢查用戶是否存在
- 26. 檢查SQL表中是否存在值
- 27. 檢查jQuery「Fancybox」是否已經註冊?
- 28. 檢查用戶名是否已註冊
- 29. 檢查用戶是否註冊Facebook
- 30. 檢查值是否存在
注意:如果你沒有用特殊的關鍵字' 「HKEY_LOCAL_MACHINE \\ SOFTWARE \\ \\微軟的Windows \\ \\ CURRENTVERSION應用程序路徑」'的事,但像默認' 設置QSettings(「HKEY_LOCAL_MACHINE \\ Software \\ MySoft \\ Star Runner \\ CurrentVersion \\ App Paths「,QSettings :: NativeFormat);',然後調用'settings.childGroups()'將會創建一個空的註冊表鍵'HKEY_LOCAL_MACHINE \ SOFTWARE \ MySoft \ Star Runner \ CurrentVersion \ App Paths'。這可能是一個不希望的副作用。我相信無法防止這種情況發生。 –