<QtEnvironmentVariables> 代理页面
函数
QString | qEnvironmentVariable(const char *varName) |
QString | qEnvironmentVariable(const char *varName, const QString &defaultValue) |
int | qEnvironmentVariableIntValue(const char *varName, bool *ok = nullptr) |
bool | qEnvironmentVariableIsEmpty(const char *varName) |
bool | qEnvironmentVariableIsSet(const char *varName) |
QByteArray | qgetenv(const char *varName) |
bool | qputenv(const char *varName, QByteArrayView value) |
bool | qunsetenv(const char *varName) |
函数文档
QString qEnvironmentVariable(const char *varName)
QString qEnvironmentVariable(const char *varName, const QString &defaultValue)
这些函数以QString 的形式返回环境变量varName 的值。如果在环境中找不到变量varName ,并且提供了defaultValue ,则返回defaultValue 。否则将返回 QString()。
Qt 环境操作函数是线程安全的,但这要求不直接调用 C 库的等效函数,如 getenv 和 putenv。
下表描述了如何在qgetenv() 和qEnvironmentVariable() 之间做出选择:
条件 | 建议 |
---|---|
变量包含文件路径或用户文本 | qEnvironmentVariable() |
特定于 Windows 的代码 | qEnvironmentVariable() |
Unix 专用代码,目标变量不是QString 和/或用于与非 Qt XML API 接口 | qgetenv() |
目标变量为QString | qEnvironmentVariable() |
目标变量是QByteArray 或 std::string | qgetenv() |
注意: 在 Unix 系统上,如果原始字符串包含无法被本地编解码器解码的任意二进制数据,该函数可能会导致数据丢失。在这种情况下,请使用qgetenv() 代替。在 Windows 系统上,该函数是无损的。
注意: 变量名varName 必须只包含 US-ASCII 字符。
另请参阅 qputenv()、qgetenv()、qEnvironmentVariableIsSet() 和qEnvironmentVariableIsEmpty()。
[noexcept]
int qEnvironmentVariableIntValue(const char *varName, bool *ok = nullptr)
返回环境变量varName 的数值。如果ok 不是空值,则根据转换成功与否,将*ok
设置为true
或false
。
等价于
qgetenv(varName).toInt(ok, 0)
等价,但速度更快,而且不会抛出异常。
注意: 值的长度是有限制的,它足以包含所有有效的 int 值,不包括前导零或空格。太长的值要么会被截断,要么此函数会将ok 设置为false
。
另请参见 qgetenv()、qEnvironmentVariable() 和qEnvironmentVariableIsSet()。
[noexcept]
bool qEnvironmentVariableIsEmpty(const char *varName)
返回环境变量varName 是否为空。
等价于
qgetenv(varName).isEmpty()
等价,但速度可能更快,而且不会抛出异常。
另请参阅 qgetenv()、qEnvironmentVariable() 和qEnvironmentVariableIsSet()。
[noexcept]
bool qEnvironmentVariableIsSet(const char *varName)
返回环境变量varName 是否已设置。
等价于
!qgetenv(varName).isNull()
等价,但速度可能更快,而且不会抛出异常。
另请参阅 qgetenv()、qEnvironmentVariable() 和qEnvironmentVariableIsEmpty()。
QByteArray qgetenv(const char *varName)
将名称为varName 的环境变量的值作为QByteArray 返回。如果在环境中找不到名称为 的变量,该函数将返回一个默认构造的QByteArray 。
Qt 环境操作函数是线程安全的,但这要求不直接调用 C 库的等效函数,如 getenv 和 putenv。
要将数据转换为QString ,请使用QString::fromLocal8Bit() 。
注意: 在 Windows 桌面上,如果原始字符串包含 ANSI 编码无法表示的 Unicode 字符,qgetenv() 可能会导致数据丢失。请使用qEnvironmentVariable() 代替。在 Unix 系统上,该函数是无损的。
注意:此函数是线程安全的。
另请参阅 qputenv()、qEnvironmentVariable()、qEnvironmentVariableIsSet() 和qEnvironmentVariableIsEmpty()。
bool qputenv(const char *varName, QByteArrayView value)
该函数设置名为varName 的环境变量的value 。如果变量不存在,它将创建该变量。如果变量无法设置,则返回 0。
在 Windows 环境下,调用 qputenv 会删除环境变量,而在 Unix 环境下,则会设置环境变量(但为空)。为了实现完全可移植的行为,最好使用qunsetenv() 。
注: 引入 qputenv() 是因为标准 C 库中的 putenv() 在 VC2005(及以后的版本)中被弃用。qputenv() 在 VC 中使用替代函数,而在所有其他平台上调用标准 C 库的实现。
注意: 在 6.5 之前的 Qt 版本中,value 参数是QByteArray ,而不是QByteArrayView 。
另请参阅 qgetenv() 和qEnvironmentVariable()。
bool qunsetenv(const char *varName)
该函数从环境中删除变量varName 。
成功时返回true
。
另请参阅 qputenv()、qgetenv() 和qEnvironmentVariable()。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.