Разверните переменные среды в 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-подобный " подход.