在Qt中扩展环境变量(getenv等效)

问题描述 投票:10回答:2

我正在寻找相当于getenv的功能。

c++ qt environment-variables
2个回答
20
投票

Qt有一个围绕getenv()的包装,称为qgetenv()

QByteArray qgetenv ( const char * varName )

getenv()是一个标准函数,但Visual Studio已弃用它,这就是Qt提供qgetenv()包装器的原因。

请注意,如果您对获取标准文件系统位置(如主目录,应用程序数据目录等)感兴趣,则应使用QDesktopServices::storageLocation()(Qt 4)或QStandardPaths::writableLocation()(Qt 5)。


8
投票

对于Qt,在访问环境变量时也存在“高级”方法。这只适用于Qt应用程序在QCoreApplication中运行的情况,大多数Qt应用程序都应如此。

在这种情况下,您可以使用QProcessEnvironment,用于至少4.6的Qt版本。您可以使用以下方式访问当前的流程环境

QProcessEnvironment::systemEnvironment();

你可以通过查询任何变量

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

在大多数情况下使用getenv / qgetenv方法应该更方便,因为这会以更通用的方式影响操作系统实现,而恕我直言,它也是一种更“类似Qt”的方法。

© www.soinside.com 2019 - 2024. All rights reserved.