如何在Qt

时间:2017-12-15 18:55:36

标签: c++ windows qt

使用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程序中知道的目录名称?

1 个答案:

答案 0 :(得分: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");

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