Как использовать переменные среды Windows в Qt5 - PullRequest
0 голосов
/ 19 января 2019

Я работаю над проектом, в котором я хотел получить доступ к звуковому файлу с C:/Windows/media, но, чтобы сделать его более общим, я хочу использовать некоторую переменную окружения из системы пользователя.

Этот код работает на данный момент

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

Я попробовал приведенный ниже код, не работает

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

Как я могу использовать% WINDIR%, чтобы сделать путь более простым и более общим?

Ответы [ 2 ]

0 голосов
/ 19 января 2019

Qt5 предоставляет несколько функций для извлечения значения, хранящегося в переменной среды, а именно: qgetenv и qEnvironmentVariable .

Как вы, кажется, нацелены на 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
}
0 голосов
/ 19 января 2019
string path(getenv("WINDIR"));

поместит% WINDIR% в std :: string. Я ожидаю, что вы можете сделать то же самое с типами Qt.

Вероятно, вам лучше использовать стандартные пути Qt http://doc.qt.io/qt-5/qstandardpaths.html. Использование% WINDIR% немного опасно.

...