<Qt环境变量> 代理页面

函数

QStringqEnvironmentVariable(const char *varName, const QString &defaultValue)
QStringqEnvironmentVariable(const char *varName)
intqEnvironmentVariableIntValue(const char *varName, bool *ok = nullptr)
boolqEnvironmentVariableIsEmpty(const char *varName)
boolqEnvironmentVariableIsSet(const char *varName)
QByteArrayqgetenv(const char *varName)
boolqputenv(const char *varName, QByteArrayView value)
boolqunsetenv(const char *varName)

函数文档

QString qEnvironmentVariable(const char *varName)

QString qEnvironmentVariable(const char *varName, const QString &defaultValue)

这些函数返回环境变量 varName 的值,作为一个 QString 对象。如果环境中找不到变量 varName 并且提供了 defaultValue,则返回 defaultValue。否则返回 QString()。

Qt 环境操作函数是线程安全的,但这要求不直接调用 C 库等效函数,如 getenv 和 putenv。

以下表格描述了在 qgetenv() 和 qEnvironmentVariable() 之间进行选择的方法

条件建议
变量包含文件路径或用户文本qEnvironmentVariable()
Windows 特定代码qEnvironmentVariable()
Unix 特定代码,目标变量不是 QString 且/或用于与非 Qt API 交云qgetenv()
目标变量是一个 QStringqEnvironmentVariable()
目标变量是 QByteArray 或 std::stringqgetenv()

注意:在 Unix 系统上,如果原始字符串包含无法由区域设置编解码器解码的任意二进制数据,则该函数可能造成数据丢失。在这种情况下,请使用 qgetenv()。在 Windows 上,此函数是无损的。

注意:变量名 varName 必须只包含 US-ASCII 字符。

另请参阅 qputenv(),qgetenv(),qEnvironmentVariableIsSet(),和 qEnvironmentVariableIsEmpty()。

QString qEnvironmentVariable(const char *varName, const QString &defaultValue)

QString qEnvironmentVariable(const char *varName)

[noexcept] int qEnvironmentVariableIntValue(const char *varName, bool *ok = nullptr)

返回环境变量 varName 的数值。如果 ok 不是空指针,根据转换的成功与否,将 *ok 设置为 truefalse

等同于

    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)

QByteArray 形式返回名为 varName 的环境变量的值。如果在环境中找不到该名称的变量,则此函数返回默认构造的 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。

使用空值调用qputenv在Windows上会删除环境变量,并在Unix上设置(但为空)。建议使用qunsetenv()以实现完全可移植的行为。

注意:qputenv()被引入是因为VC2005(及更高版本)中standard C库的putenv()被弃用。qputenv()在VC中使用替换函数,并在所有其他平台上调用标准C库的实现。

注意:在Qt 6.5之前的版本中,参数是QByteArray,而不是QByteArrayView

另请参阅:qgetenv()和qEnvironmentVariable

bool qunsetenv(const char *varName)

此函数从环境变量中删除变量varName

在成功时返回true

另请参阅:qputenv()、qgetenv()以及qEnvironmentVariable

© 2024 Qt公司有限公司。本文件中包含的文档贡献版权属于各自的所有者。本文件中提供的文档根据自由软件基金会发布的GNU自由文档许可证版本1.3的条款提供许可。Qt及其相应的标志是芬兰及全球其他地区的Qt公司有限公司的商标。所有其他商标均为其各自所有者的财产。