QProcessEnvironment Class

QProcessEnvironment 类保存可传递给程序的环境变量。更多

头文件: #include <QProcessEnvironment>
CMake.QProcessEnvironment find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

该类可等价比较

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

公共类型

(since 6.3) enum Initialization { InheritFromParent }

公共函数

QProcessEnvironment()
(since 6.3) QProcessEnvironment(QProcessEnvironment::Initialization)
QProcessEnvironment(const QProcessEnvironment &other)
~QProcessEnvironment()
void clear()
bool contains(const QString &name) const
(since 6.3) bool inheritsFromParent() const
void insert(const QString &name, const QString &value)
void insert(const QProcessEnvironment &e)
bool isEmpty() const
QStringList keys() const
void remove(const QString &name)
void swap(QProcessEnvironment &other)
QStringList toStringList() const
QString value(const QString &name, const QString &defaultValue = QString()) const
QProcessEnvironment &operator=(const QProcessEnvironment &other)

静态公共成员

QProcessEnvironment systemEnvironment()
bool operator!=(const QProcessEnvironment &lhs, const QProcessEnvironment &rhs)
bool operator==(const QProcessEnvironment &lhs, const QProcessEnvironment &rhs)

详细说明

进程的环境由一组称为环境变量的 key=value 对组成。QProcessEnvironment 类封装了这一概念,并允许轻松操作这些变量。它与QProcess 一起用于为子进程设置环境。它不能用于改变当前进程的环境。

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

在 Unix 系统中,变量名区分大小写。请注意,Unix 环境允许变量名和内容包含任意二进制数据(NUL 字符除外)。QProcessEnvironment 将保留此类变量,但不支持操作其名称或值不能被当前本地设置编码的变量(请参阅QString::toLocal8Bit )。

在 Windows 中,变量名不区分大小写,但保留大小写。QProcessEnvironment 的行为也是如此。

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

成员类型文档

[since 6.3] enum QProcessEnvironment::Initialization

该枚举包含一个用于消除构造函数歧义的标记。

常量说明
QProcessEnvironment::InheritFromParent0将创建一个QProcessEnvironment ,当在QProcess 上设置该值时,将使其从父类继承变量。

此枚举在 Qt 6.3 中引入。

成员函数文档

QProcessEnvironment::QProcessEnvironment()

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

[noexcept, since 6.3] QProcessEnvironment::QProcessEnvironment(QProcessEnvironment::Initialization)

创建一个对象,在QProcess 上设置后,该对象将以继承自父进程的环境变量的方式执行。

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

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

此函数在 Qt 6.3 中引入。

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

QProcessEnvironment::QProcessEnvironment(const QProcessEnvironment &other)

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

[noexcept] QProcessEnvironment::~QProcessEnvironment()

释放与QProcessEnvironment 对象相关的资源。

void QProcessEnvironment::clear()

删除QProcessEnvironment 对象中的所有 key=value 对,使其为空。

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

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

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

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

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

[since 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 对象。该对象中同时存在于e 中的变量将被覆盖。

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 互换。这一操作非常快速,从未出现过故障。

[static] QProcessEnvironment QProcessEnvironment::systemEnvironment()

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

它以QProcessEnvironment 的形式返回。该函数不缓存系统环境。因此,如果调用了低级 C 库函数(如setenvputenv ),则有可能获得环境的更新版本。

不过,需要注意的是,重复调用该函数将重新创建QProcessEnvironment 对象,这是一个非繁琐的操作。

另请参见 QProcess::systemEnvironment()。

QStringList QProcessEnvironment::toStringList() const

QProcessEnvironment 对象转换为字符串列表,每个环境变量设置一个字符串。环境变量的名称和值之间用等号分隔('=')。

此函数返回的QStringList 内容适合用于演示。不建议与 QProcess::setEnvironment 函数一起使用,因为在 Unix 环境下可能会出现编码问题,性能也会变差。

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

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

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

另请参见 contains()、insert() 和remove()。

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

other QProcessEnvironment 对象的内容复制到此对象中。

相关非会员

[noexcept] bool operator!=(const QProcessEnvironment &lhs, const QProcessEnvironment &rhs)

如果进程环境对象lhsrhs 不同,则返回true

另请参阅 operator==().

[noexcept] bool operator==(const QProcessEnvironment &lhs, const QProcessEnvironment &rhs)

如果进程环境对象lhsrhs 相等,则返回true

如果两个QProcessEnvironment 对象具有相同的 key=value 对,则视为相等。在环境区分大小写的平台上,键的比较区分大小写。

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

© 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.