- Qt 6.10
- Qt Core
- C++ Classes
- QProcessEnvironment
- Qt 6.10.2 Reference Documentation

# QProcessEnvironment Class

The QProcessEnvironment class holds the environment variables that can be passed to a program. More...

Header: | `#include <QProcessEnvironment>`
CMake: | `find_package(Qt6 REQUIRED COMPONENTS Core)` `target_link_libraries(mytarget PRIVATE Qt6::Core)`
qmake: | `QT += core`

- List of all members, including inherited members
- QProcessEnvironment is part of Input/Output and Networking and Implicitly Shared Classes.

This class is equality-comparable.

Note: All functions in this class are reentrant.

## Public Types

`(since 6.3)` enum | Initialization { InheritFromParent }

## Public Functions

| 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)

## Static Public Members

QProcessEnvironment | systemEnvironment()

## Related Non-Members

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

## Detailed Description

A process's environment is composed of a set of key=value pairs known as environment variables. The QProcessEnvironment class wraps that concept and allows easy manipulation of those variables. It's meant to be used along with QProcess, to set the environment for child processes. It cannot be used to change the current process's environment.

The environment of the calling process can be obtained using QProcessEnvironment::systemEnvironment().

On Unix systems, the variable names are case-sensitive. Note that the Unix environment allows both variable names and contents to contain arbitrary binary data (except for the NUL character). QProcessEnvironment will preserve such variables, but does not support manipulating variables whose names or values cannot be encoded by the current locale settings (see QString::toLocal8Bit).

On Windows, the variable names are case-insensitive, but case-preserving. QProcessEnvironment behaves accordingly.

See also QProcess, QProcess::systemEnvironment(), and QProcess::setProcessEnvironment().

## Member Type Documentation

### `[since 6.3]` enum QProcessEnvironment::Initialization

This enum contains a token that is used to disambiguate constructors.

Constant | Value | Description
--- | --- | ---
`QProcessEnvironment::InheritFromParent` | `0` | A QProcessEnvironment will be created that, when set on a QProcess, causes it to inherit variables from its parent.

This enum was introduced in Qt 6.3.

## Member Function Documentation

### QProcessEnvironment::QProcessEnvironment()

Creates a new QProcessEnvironment object. This constructor creates an empty environment. If set on a QProcess, this will cause the current environment variables to be removed (except for PATH and SystemRoot on Windows).

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

Creates an object that when set on QProcess will cause it to be executed with environment variables inherited from its parent process.

Note: The created object does not store any environment variables by itself, it just indicates to QProcess to arrange for inheriting the environment at the time when the new process is started. Adding any environment variables to the created object will disable inheritance of the environment and result in an environment containing only the added environment variables.

If a modified version of the parent environment is wanted, start with the return value of `systemEnvironment()` and modify that (but note that changes to the parent process's environment after that is created won't be reflected in the modified environment).

This function was introduced in Qt 6.3.

See also inheritsFromParent() and systemEnvironment().

### QProcessEnvironment::QProcessEnvironment(const QProcessEnvironment &other)

Creates a QProcessEnvironment object that is a copy of other.

### `[noexcept]` QProcessEnvironment::~QProcessEnvironment()

Frees the resources associated with this QProcessEnvironment object.

### void QProcessEnvironment::clear()

Removes all key=value pairs from this QProcessEnvironment object, making it empty.

If the environment was constructed using `QProcessEnvironment::InheritFromParent` it remains unchanged.

See also isEmpty() and systemEnvironment().

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

Returns `true` if the environment variable of name name is found in this QProcessEnvironment object.

See also insert() and value().

### `[since 6.3]` bool QProcessEnvironment::inheritsFromParent() const

Returns `true` if this QProcessEnvironment was constructed using `QProcessEnvironment::InheritFromParent`.

This function was introduced in Qt 6.3.

See also isEmpty().

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

Inserts the environment variable of name name and contents value into this QProcessEnvironment object. If that variable already existed, it is replaced by the new value.

On most systems, inserting a variable with no contents will have the same effect for applications as if the variable had not been set at all. However, to guarantee that there are no incompatibilities, to remove a variable, please use the remove() function.

See also contains(), remove(), and value().

### void QProcessEnvironment::insert(const QProcessEnvironment &e)

Inserts the contents of e in this QProcessEnvironment object. Variables in this object that also exist in e will be overwritten.

This is an overloaded function.

### bool QProcessEnvironment::isEmpty() const

Returns `true` if this QProcessEnvironment object is empty: that is there are no key=value pairs set.

This method also returns `true` for objects that were constructed using `QProcessEnvironment::InheritFromParent`.

See also clear(), systemEnvironment(), insert(), and inheritsFromParent().

### QStringList QProcessEnvironment::keys() const

Returns a list containing all the variable names in this QProcessEnvironment object.

The returned list is empty for objects constructed using `QProcessEnvironment::InheritFromParent`.

### void QProcessEnvironment::remove(const QString &name)

Removes the environment variable identified by name from this QProcessEnvironment object. If that variable did not exist before, nothing happens.

See also contains(), insert(), and value().

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

Swaps this process environment instance with other. This operation is very fast and never fails.

### `[static]` QProcessEnvironment QProcessEnvironment::systemEnvironment()

The systemEnvironment function returns the environment of the calling process.

It is returned as a QProcessEnvironment. This function does not cache the system environment. Therefore, it's possible to obtain an updated version of the environment if low-level C library functions like `setenv` or `putenv` have been called.

However, note that repeated calls to this function will recreate the QProcessEnvironment object, which is a non-trivial operation.

See also QProcess::systemEnvironment().

### QStringList QProcessEnvironment::toStringList() const

Converts this QProcessEnvironment object into a list of strings, one for each environment variable that is set. The environment variable's name and its value are separated by an equal character ('=').

The QStringList contents returned by this function are suitable for presentation. Use with the QProcess::setEnvironment function is not recommended due to potential encoding problems under Unix, and worse performance.

See also systemEnvironment(), QProcess::systemEnvironment(), and QProcess::setProcessEnvironment().

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

Searches this QProcessEnvironment object for a variable identified by name and returns its value. If the variable is not found in this object, then defaultValue is returned instead.

See also contains(), insert(), and remove().

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

Copies the contents of the other QProcessEnvironment object into this one.

## Related Non-Members

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

Returns `true` if the process environment objects lhs and rhs are different.

See also operator==().

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

Returns `true` if the process environment objects lhs and rhs are equal.

Two QProcessEnvironment objects are considered equal if they have the same set of key=value pairs. The comparison of keys is done case-sensitive on platforms where the environment is case-sensitive.

See also operator!=() and contains().