如何在Qt中获取Windows默认文件夹的本地化名称

问题描述 投票:1回答:1

使用Qt,我可以获得一些默认路径,我可以通过e创建文件。 G。 QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation)在Linux和Windows上运行良好。我还看到可以通过QStandardPaths::displayName获得相应位置的本地化名称。

“问题”是,在Windows上,某些默认文件夹的名称会显示为已本地化。对于上面的命令,我得到 - 根据文档 - C:/Users/some_user/Documents。这可能是磁盘上的实际路径。但是用户(使用德语语言环境)看到的是翻译版本:在这种情况下为C:/Benutzer/some_user/Eigene Dokumente

因此,不仅翻译了最后一个文件夹(我可以通过QStandardPaths::displayName调用获得的字符串),还有基本目录。

是否有可靠的标准Qt方式能够显示用户从其他Windows程序中知道的目录名称?

c++ windows qt
1个回答
0
投票

这不是你想要的,但我认为这可以给出一个想法。您可以通过访问Windows环境变量来获取默认路径:

在C ++中,我们有一个本机函数用于此目的:

inline auto get_environement_variable(const char* key ) {
    char * val = getenv(key);
    return (val == NULL) ? "" : std::string(val);
}

一些默认环境变量:

auto programFiles = get_environement_variable("%ProgramW6432%");
auto programFilesX86 = get_environement_variable("%ProgramFiles(x86)%");
auto userProfile = get_environement_variable("%USERPROFILE%");

也许我错了,但我认为这是文件夹的一个:

auto userProfile = get_environement_variable("%USERPROFILE%\Documents");

我的操作系统是英文的,所以我无法确认返回的字符串是否为已翻译的字符串。

© www.soinside.com 2019 - 2024. All rights reserved.