【问题标题】:How to use Windows environment variables in Qt5如何在 Qt5 中使用 Windows 环境变量
【发布时间】:2019-01-19 07:05:44
【问题描述】:

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

此代码目前有效

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

我试过下面的代码,不行

soundURL = QUrl::fromUserInput(soundFilename,
                                       QStringLiteral((%%WINDIR%%)+"/media"),
                                       QUrl::AssumeLocalFile);

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

【问题讨论】:

  • (%%WINDIR%%) 不是有效的 C++ 表达式

标签: c++ qt environment-variables qt5


【解决方案1】:

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
}

【讨论】:

    【解决方案2】:
    string path(getenv("WINDIR"));
    

    会将 %WINDIR% 放入 std::string 中。我希望你可以对 Qt 类型做同样的事情。

    使用 Qt 标准路径http://doc.qt.io/qt-5/qstandardpaths.html 可能会更好。搞乱 %WINDIR% 有点危险。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-30
      • 1970-01-01
      • 2015-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多