我正在一个项目中,我想从C:/Windows/media访问声音文件,但为了使其更通用,我想使用用户系统中的一些环境变量。

此代码目前有效

soundURL = QUrl::fromUserInput(soundFilename,
                                       QStringLiteral("C:/Windows/media"),
                                       QUrl::AssumeLocalFile);

我试过下面的代码,不起作用
soundURL = QUrl::fromUserInput(soundFilename,
                                       QStringLiteral((%%WINDIR%%)+"/media"),
                                       QUrl::AssumeLocalFile);

如何使用%WINDIR%使路径更简单和更通用?

最佳答案

Qt5公开了几个函数来检索存储在环境变量qgetenvqEnvironmentVariable中的值。

正如您似乎以Windows为目标,更安全的方法是使用QString qEnvironmentVariable(const char *varName)

QString winDirPath = qEnvironmentVariable("WINDIR");

if (!winDirPath.isNull()) {
    // the environment variable WINDIR exists and has been retrieved
} else {
    // the environment variable does not exists in this system
}

07-24 14:30