QProcessEnvironment Class
QProcessEnvironment 类保存可传递给程序的环境变量。更多
头文件: | #include <QProcessEnvironment> |
CMake.QProcessEnvironment | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 所有成员(包括继承成员)的列表
- QProcessEnvironment 属于输入/输出和网络及隐式共享类。
该类可等价比较。
注意:该类中的所有函数都是可重入的。
公共类型
(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::InheritFromParent | 0 | 将创建一个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
。
[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 库函数(如setenv
或putenv
),则有可能获得环境的更新版本。
不过,需要注意的是,重复调用该函数将重新创建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)
如果进程环境对象lhs 和rhs 不同,则返回true
。
另请参阅 operator==().
[noexcept]
bool operator==(const QProcessEnvironment &lhs, const QProcessEnvironment &rhs)
如果进程环境对象lhs 和rhs 相等,则返回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.