Разверните переменные среды в Qt (эквивалент getenv)

Я ищу эквивалент getenv

2 ответов


Qt имеет обертку вокруг getenv(), под названием qgetenv().

QByteArray qgetenv ( const char * varName )

getenv() является стандартной функцией, но Visual Studio устарела, поэтому Qt предоставляет qgetenv() фантик.

обратите внимание, что если вы заинтересованы в получении стандартных местах файловой системы (например, домашний каталог, каталог данных приложений и т. д.) вместо этого вы должны использовать QDesktopServices::storageLocation() (Qt 4) или QStandardPaths::writableLocation() (Qt 5).


для Qt также существует подход "высокого уровня" при доступе к переменным среды. Это работает, только если ваше приложение Qt работает в QCoreApplication, что должно быть в случае большинства приложений Qt.

в этом случае, вы можете использовать QProcessEnvironment, для Qt версий не менее 4.6. Вы можете получить доступ к текущей среде процесса с помощью

QProcessEnvironment::systemEnvironment();

и вы можете запросить любую переменную через

QProcessEnvironment::systemEnvironment().value("<variablename>", "<defaultvalue>");

Это должно быть больше удобно, что использование getenv / qgetenv подхода в большинстве случаев, как это тени реализации операционной системы в более общем виде и IMHO это также более" Qt-подобный " подход.