QSettingsreplace反斜杠(registry)

我用QSettings阅读registry。 我想读的关键是这样的:

HKEY_LOCAL_MACHINE \ SYSTEM \ Setup \ Source OS(2015年8月1日更新02:45:41更新)

由于密钥名称Source OS (Updated on 8/1/2015 02:45:41)是dynamic的,我只是打开

 QSettings settings("HKEY_LOCAL_MACHINE\\SYSTEM\\Setup", QSettings::NativeFormat); 

并通过settings.childGroups()recursion运行,并用此构build我的密钥:

 QString key = settings.fileName() + "\\" + settings.group(); 

但是这会导致:

\ HKEY_LOCAL_MACHINE \ SYSTEM \ Setup \ Source OS(更新于8 \ 1 \ 2015 02:45:41)

正如你所看到的斜线现在是反斜杠,我不能区分名称和path片。

任何想法为什么QSettings将斜杠转换成反斜杠?

从QSettings 文档 :

在章节或键名称中不要使用斜杠( '/''\' ; 反斜杠字符用于分隔子键(见下文)。 在窗口'\'QSettings转换为'/' ,这使得它们是相同的。

一般来说,动态注册表键名称的想法不太好。 我认为更好的方法是在您的密钥中创建两个单独的值 – Source OSUpdated On值。