QProcessEnvironment 类

QProcessEnvironment 类包含可以传递给程序的环变量。 更多...

头文件 #include <QProcessEnvironment>
CMakefind_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmakeQT += core

注意: 这个类中的所有函数都是 可重入的

公共类型

(since 6.3) 枚举初始化 { 从父类继承 }

公共函数

QProcessEnvironment()
(since 6.3) QProcessEnvironment(QProcessEnvironment::Initialization)
QProcessEnvironment(const QProcessEnvironment &other)
~QProcessEnvironment()
voidclear()
boolcontains(const QString &name) const
(since 6.3) boolinheritsFromParent() const
voidinsert(const QString &name, const QString &value)
voidinsert(const QProcessEnvironment &e)
boolisEmpty() const
QStringListkeys() const
voidremove(const QString &name)
voidswap(QProcessEnvironment &other)
QStringListtoStringList() const
QStringvalue(const QString &name, const QString &defaultValue = QString()) const
booloperator!=(const QProcessEnvironment &other) const
QProcessEnvironment &operator=(const QProcessEnvironment &other)
booloperator==(const QProcessEnvironment &other) const

静态公共成员

QProcessEnvironmentsystemEnvironment()

详细描述

进程的环境是由一组键=值对组成的,称为环境变量。QProcessEnvironment 类包装了这个概念,并可以轻松地对这些变量进行操作。它打算与 QProcess 一起使用,以设置子进程的环境。它不能用来更改当前进程的环境。

可以使用 QProcessEnvironment::systemEnvironment()() 获取调用进程的环境。

在 Unix 系统上,变量名是区分大小写的。请注意,Unix 环境允许变量名和内容包含任意二进制数据(除了空字符 NUL)。QProcessEnvironment 将保留此类变量,但不起支持不能由当前区域设置编码的变量名或值(参见 QString::toLocal8Bit)。

在 Windows 上,变量名是不区分大小写的,但会保留大小写。QProcessEnvironment 的行为与此一致。

另请参阅 QProcessQProcess::systemEnvironment() 和 QProcess::setProcessEnvironment()。

成员类型文档

[自 6.3 版起] 枚举 QProcessEnvironment::Initialization

此枚举包含一个用于区分构造函数的标记。

常数描述
QProcessEnvironment::InheritFromParent0创建一个 QProcessEnvironment,当设置在一个 QProcess 上时,将从父进程继承变量。

此枚举是在 Qt 6.3 中引入的。

成员函数文档

QProcessEnvironment::QProcessEnvironment()

创建一个新的 QProcessEnvironment 对象。此构造函数创建一个空环境。如果将此对象设置为 QProcess,则将导致当前环境变量被删除(Windows 上的 PATH 和 SystemRoot 除外)。

[noexcept,自 6.3 版起] QProcessEnvironment::QProcessEnvironment(QProcessEnvironment::Initialization)

创建一个对象,当设置在 QProcess 上时,将使其使用从父进程继承的环境变量运行。

注意:创建的对象本身不会存储任何环境变量,它仅指示 QProcess 在启动新进程时设置环境继承。向创建的对象中添加任何环境变量将禁用环境继承,并导致包含仅添加的环境变量的环境。

如果需要一个修改过的父环境版本,请从 systemEnvironment() 的返回值开始修改(但请注意,创建之后对父进程环境的修改将不会反映在修改后的环境中)。

此函数是在 Qt 6.3 中引入的。

另请参阅 inheritsFromParent() 和 systemEnvironment()。

QProcessEnvironment::QProcessEnvironment(const QProcessEnvironment &other)

创建一个 other 的副本的 QProcessEnvironment 对象。

[noexcept] QProcessEnvironment::~QProcessEnvironment()

释放与此 QProcessEnvironment 对象关联的资源。

void QProcessEnvironment::clear()

从此 QProcessEnvironment 对象中删除所有键=值对,使其变为空。

如果环境是使用 QProcessEnvironment::InheritFromParent 创建的,它保持不变。

另请参阅isEmpty() 和 systemEnvironment()。

bool QProcessEnvironment::contains(const QString &name) const

如果在此 QProcessEnvironment 对象中找到名为 name 的环境变量,则返回 true

另请参阅insert() 和 value()。

[自6.3版本开始] bool QProcessEnvironment::inheritsFromParent() const

如果此 QProcessEnvironment 是使用 QProcessEnvironment::InheritFromParent 创建的,则返回 true

此函数是在 Qt 6.3 中引入的。

另请参阅isEmpty()。

void QProcessEnvironment::insert(const QString &name, const QString &value)

将名为 name 且内容为 value 的环境变量插入到此 QProcessEnvironment 对象中。如果该变量已存在,则用新值替换。

在大多数系统中,插入没有内容的环境变量对于应用程序的作用,就好像该变量根本未设置一样。然而,为了保证没有不兼容性,要删除变量,请使用 remove() 函数。

另请参阅contains()、remove() 和 value()。

void QProcessEnvironment::insert(const QProcessEnvironment &e)

这是一个重载函数。

e 的内容插入至此 QProcessEnvironment 对象中。此对象中也存在的变量将被覆盖。

bool QProcessEnvironment::isEmpty() const

如果此 QProcessEnvironment 对象为空:即没有设置任何键值对,则返回 true

方法对于使用 QProcessEnvironment::InheritFromParent 创建的对象也返回 true

另请参阅clear()、systemEnvironment()、insert() 和 inheritsFromParent()。

QStringList QProcessEnvironment::keys() const

返回一个包含此 QProcessEnvironment 对象中所有变量名称的列表。

对于使用 QProcessEnvironment::InheritFromParent 创建的对象,返回的列表为空。

void QProcessEnvironment::remove(const QString &name)

从此 QProcessEnvironment 对象中删除由 name 标识的环境变量。如果该变量之前不存在,则不进行任何操作。

参见contains(),insert() 和 value()。

[noexcept] void QProcessEnvironment::swap(QProcessEnvironment &other)

交换此进程环境实例与 other。此函数执行非常快,永远不会失败。

[静态] QProcessEnvironment QProcessEnvironment::systemEnvironment()

systemEnvironment 函数返回调用进程的环境。

它作为 QProcessEnvironment 返回。此函数不缓存系统环境。因此,如果已调用低级 C 库函数如 setenvputenv,则可以获取环境的更新版本。

但是,请注意,对这一函数的重复调用将重新创建 QProcessEnvironment 对象,这是一个非 routine 的操作。

参见QProcess::systemEnvironment

QStringList QProcessEnvironment::toStringList() const

将此 QProcessEnvironment 对象转换为字符串列表,每个环境变量的名称和一个等于字符('=')分隔其值。

此函数返回的 QStringList 内容适合于展示。由于潜在的编码问题和较差的性能,不建议与 QProcess::setEnvironment 函数一起使用。

参见systemEnvironmentQProcess::systemEnvironmentQProcess::setProcessEnvironment

QString QProcessEnvironment::value(const QString &name, const QString &defaultValue = QString()) const

在此 QProcessEnvironment 对象中搜索由 name 标识的变量,并返回其值。如果在此对象中找不到该变量,则返回 defaultValue 而不是值。

参见containsinsertremove

bool QProcessEnvironment::operator!=(const QProcessEnvironment &other) const

如果此对象与 other 对象不同,则返回 true

参见operator==

QProcessEnvironment &QProcessEnvironment::operator=(const QProcessEnvironment &other)

other 对象的内容复制到当前对象中。

bool QProcessEnvironment::operator==(const QProcessEnvironment &other) const

如果此对象与 other 对象相等,则返回 true

如果有相同的键=值对集合,认为两个 QProcessEnvironment 对象是相等的。在环境区分大小写的平台上,按大小写敏感的方式比较键。

另请参阅 operator!=() 和 contains()。

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