<QtEnvironmentVariables>
Fonctions d'aide pour la gestion des variables d'environnement. En savoir plus...
| Header: | #include <QtEnvironmentVariables> |
Fonctions
| QString | qEnvironmentVariable(const char *varName) |
| QString | qEnvironmentVariable(const char *varName, const QString &defaultValue) |
| int | qEnvironmentVariableIntValue(const char *varName, bool *ok = nullptr) |
(since 6.10) std::optional<qint64> | qEnvironmentVariableIntegerValue(const char *varName) |
| bool | qEnvironmentVariableIsEmpty(const char *varName) |
| bool | qEnvironmentVariableIsSet(const char *varName) |
| QByteArray | qgetenv(const char *varName) |
| bool | qputenv(const char *varName, QByteArrayView value) |
| bool | qunsetenv(const char *varName) |
Description détaillée
Les fonctions de cet en-tête permettent de manipuler les variables d'environnement.
Sécurité inter-thread
Les fonctions Qt de manipulation de l'environnement sont sécurisées pour les threads, mais cela implique de ne pas appeler directement les fonctions équivalentes de la bibliothèque C telles que getenv et putenv.
Cela vaut également pour les bibliothèques tierces chargées par l'application. Si une telle bibliothèque utilise des fonctions non sécurisées pour manipuler l'environnement à partir d'un thread secondaire, il est recommandé d'effectuer toute la configuration de l'environnement dans le thread principal avant de charger la bibliothèque et/ou de créer des threads secondaires.
Documentation des fonctions
QString qEnvironmentVariable(const char *varName, const QString &defaultValue)
QString qEnvironmentVariable(const char *varName)
Ces fonctions renvoient la valeur de la variable d'environnement « varName » sous la forme d'un objet « QString ». Si aucune variable « varName » n'est trouvée dans l'environnement et que « defaultValue » est fourni, « defaultValue » est renvoyé. Dans le cas contraire, « QString() » est renvoyé.
Les fonctions de manipulation de l’environnement Qt sont sûres pour les threads, mais cela nécessite que les fonctions équivalentes de la bibliothèque C, telles que getenv et putenv, ne soient pas appelées directement.
Le tableau suivant décrit comment choisir entre ` qgetenv()` et ` qEnvironmentVariable()` :
| Condition | Recommandation |
|---|---|
| La variable contient des chemins d’accès à des fichiers ou du texte saisi par l’utilisateur | qEnvironmentVariable() |
| Code spécifique à Windows | qEnvironmentVariable() |
| Code spécifique à Unix, la variable de destination n'est pas QString et/ou est utilisée pour s'interfacer avec des API non-Qt | qgetenv() |
| La variable de destination est un QString | qEnvironmentVariable() |
| La variable de destination est de type ` QByteArray ` ou `std::string` | qgetenv() |
Remarque : sur les systèmes Unix, cette fonction peut entraîner une perte de données si la chaîne d'origine contient des données binaires arbitraires qui ne peuvent pas être décodées par le codec de la locale. Dans ce cas, utilisez plutôt qgetenv(). Sous Windows, cette fonction ne provoque aucune perte de données.
Remarque : le nom de la variable varName ne doit contenir que des caractères US-ASCII.
Voir également : qputenv(), qgetenv(), qEnvironmentVariableIsSet(), qEnvironmentVariableIsEmpty() et qEnvironmentVariableIntegerValue().
[noexcept] int qEnvironmentVariableIntValue(const char *varName, bool *ok = nullptr)
Renvoie la valeur numérique de la variable d'environnement varName. Si ok n'est pas nul, définit *ok sur true ou false selon que la conversion a réussi ou non.
Équivalent à
int to_int = qgetenv(varName).toInt(ok, 0);sauf qu’il est beaucoup plus rapide et ne peut pas lever d’exceptions.
Voir également qgetenv(), qEnvironmentVariable() et qEnvironmentVariableIsSet().
[noexcept, since 6.10] std::optional<qint64> qEnvironmentVariableIntegerValue(const char *varName)
Renvoie la valeur numérique de la variable d'environnement « varName ». Si la variable n'est pas définie ou n'a pas pu être interprétée comme un entier, la fonction renvoie « std::nullopt ».
Similaire à
int to_int = qgetenv(varName).toInt(ok, 0);sauf qu'elle est beaucoup plus rapide et ne peut pas lever d'exceptions.
Si une valeur nulle est sémantiquement équivalente à une variable vide ou non définie, les applications peuvent utiliser
auto value = qEnvironmentVariableIntegerValue(varName).value_or(0);Notez toutefois que, dans ce cas, un échec d’analyse d’une valeur produira également un zéro.
Mais si une valeur nulle peut être utilisée pour désactiver certaines fonctionnalités, les applications peuvent comparer l’ std::optional e renvoyée à zéro, ce qui ne sera vrai que si la variable a été définie et contenait un nombre interprété comme zéro, comme dans :
bool equals_zero = qEnvironmentVariableIntegerValue(varName) == 0;Cette fonction a été introduite dans Qt 6.10.
Voir également ` qgetenv()`, ` qEnvironmentVariable()` et ` qEnvironmentVariableIsSet()`.
[noexcept] bool qEnvironmentVariableIsEmpty(const char *varName)
Indique si la variable d'environnement « varName » est vide.
Équivalent à
bool is_empty = qgetenv(varName).isEmpty();sauf qu’elle est potentiellement beaucoup plus rapide et ne peut pas lever d’exceptions.
Voir aussi qgetenv(), qEnvironmentVariable() et qEnvironmentVariableIsSet().
[noexcept] bool qEnvironmentVariableIsSet(const char *varName)
Indique si la variable d'environnement « varName » est définie.
Équivalent à
bool is_not_null = !qgetenv(varName).isNull();sauf qu’elle est potentiellement beaucoup plus rapide et ne peut pas lever d’exceptions.
Voir également qgetenv(), qEnvironmentVariable(), qEnvironmentVariableIsEmpty() et qEnvironmentVariableIntegerValue().
QByteArray qgetenv(const char *varName)
Renvoie la valeur de la variable d'environnement nommée « varName » sous la forme d'un objet ` QByteArray`. Si aucune variable de ce nom n'est trouvée dans l'environnement, cette fonction renvoie un objet ` QByteArray` construit par défaut.
Les fonctions de manipulation de l'environnement Qt sont sûres pour les threads, mais cela nécessite que les fonctions équivalentes de la bibliothèque C, telles que `getenv` et `putenv`, ne soient pas appelées directement.
Pour convertir les données en une chaîne de caractères de type ` QString `, utilisez ` QString::fromLocal8Bit()`.
Remarque : sous Windows de bureau, qgetenv() peut entraîner une perte de données si la chaîne d’origine contient des caractères Unicode non représentables dans le codage ANSI. Utilisez plutôt qEnvironmentVariable(). Sur les systèmes Unix, cette fonction ne provoque aucune perte de données.
Remarque : cette fonction est sûre pour les threads.
Voir également qputenv(), qEnvironmentVariable(), qEnvironmentVariableIsSet(), qEnvironmentVariableIsEmpty() et qEnvironmentVariableIntegerValue().
bool qputenv(const char *varName, QByteArrayView value)
value Cette fonction définit la valeur de la variable d'environnement nommée « varName ». Elle crée la variable si celle-ci n'existe pas. Elle renvoie 0 si la variable n'a pas pu être définie.
Appeler `qputenv` avec une valeur vide supprime la variable d’environnement sous Windows, et la définit (mais vide) sous Unix. Préférez utiliser ` qunsetenv()` pour un comportement entièrement portable.
Remarque : la fonction `qputenv ()` a été introduite car la fonction `putenv()` de la bibliothèque C standard a été dépréciée dans VC2005 (et les versions ultérieures). `qputenv()` utilise la fonction de remplacement dans VC et appelle l'implémentation de la bibliothèque C standard sur toutes les autres plateformes.
Remarque : dans les versions de Qt antérieures à la version 6.5, l’argument de ` value ` était ` QByteArray`, et non ` QByteArrayView`.
Voir également qgetenv() et qEnvironmentVariable().
bool qunsetenv(const char *varName)
Cette fonction supprime la variable varName de l'environnement.
Renvoie « true » en cas de succès.
Voir également qputenv(), qgetenv() et qEnvironmentVariable().
© 2026 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.