<QtEnvironmentVariables>
Hilfsfunktionen für die Arbeit mit Umgebungsvariablen. Mehr...
| Header: | #include <QtEnvironmentVariables> |
Funktionen
| 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) |
Ausführliche Beschreibung
Die Funktionen in diesem Header dienen zur Bearbeitung der Umgebungsvariablen.
Thread-Sicherheit
Die Qt-Funktionen zur Bearbeitung der Umgebungsvariablen sind threadsicher, dies setzt jedoch voraus, dass die entsprechenden Funktionen der C-Bibliothek wie „ getenv “ und „ putenv “ nicht direkt aufgerufen werden.
Dies gilt auch für Bibliotheken von Drittanbietern, die von der Anwendung geladen werden. Wenn eine solche Bibliothek unsichere Funktionen zur Bearbeitung der Umgebungsvariablen aus einem sekundären Thread heraus verwendet, wird empfohlen, die gesamte Einrichtung der Umgebungsvariablen im Hauptthread vorzunehmen, bevor die Bibliothek geladen und/oder sekundäre Threads erstellt werden.
Funktionsdokumentation
QString qEnvironmentVariable(const char *varName, const QString &defaultValue)
QString qEnvironmentVariable(const char *varName)
Diese Funktionen geben den Wert der Umgebungsvariable „ varName “ als „ QString “ zurück. Wird keine Variable „ varName “ in der Umgebung gefunden und ist „ defaultValue “ angegeben, wird „ defaultValue “ zurückgegeben. Andernfalls wird „QString()“ zurückgegeben.
Die Qt-Funktionen zur Bearbeitung der Umgebungsvariablen sind threadsicher, dies setzt jedoch voraus, dass die entsprechenden Funktionen der C-Bibliothek wie getenv und putenv nicht direkt aufgerufen werden.
Die folgende Tabelle beschreibt, wie man zwischen „ qgetenv()“ und „ qEnvironmentVariable()“ wählen sollte:
| Bedingung | Empfehlung |
|---|---|
| Die Variable enthält Dateipfade oder Benutzereingaben | qEnvironmentVariable() |
| Windows-spezifischer Code | qEnvironmentVariable() |
| Unix-spezifischer Code, die Zielvariable ist nicht „ QString “ und/oder wird zur Anbindung an Nicht-Qt-APIs verwendet | qgetenv() |
| Die Zielvariable ist eine QString | qEnvironmentVariable() |
| Die Zielvariable ist ein ` QByteArray ` oder `std::string` | qgetenv() |
Hinweis: Auf Unix-Systemen kann diese Funktion zu Datenverlusten führen, wenn die ursprüngliche Zeichenkette beliebige Binärdaten enthält, die vom Locale-Codec nicht dekodiert werden können. Verwenden Sie in diesem Fall stattdessen qgetenv(). Unter Windows arbeitet diese Funktion verlustfrei.
Hinweis: Der Variablenname „ varName “ darf nur US-ASCII-Zeichen enthalten.
Siehe auch qputenv(), qgetenv(), qEnvironmentVariableIsSet(), qEnvironmentVariableIsEmpty() und qEnvironmentVariableIntegerValue().
[noexcept] int qEnvironmentVariableIntValue(const char *varName, bool *ok = nullptr)
Gibt den numerischen Wert der Umgebungsvariablen „ varName “ zurück. Wenn „ ok “ nicht null ist, wird „ *ok “ je nach Erfolg der Konvertierung auf „ true “ oder „ false “ gesetzt.
Entspricht
int to_int = qgetenv(varName).toInt(ok, 0);mit dem Unterschied, dass diese Funktion wesentlich schneller ist und keine Ausnahmen auslösen kann.
Siehe auch qgetenv(), qEnvironmentVariable() und qEnvironmentVariableIsSet().
[noexcept, since 6.10] std::optional<qint64> qEnvironmentVariableIntegerValue(const char *varName)
Gibt den numerischen Wert der Umgebungsvariablen „ varName “ zurück. Wenn die Variable nicht gesetzt ist oder nicht als Ganzzahl ausgewertet werden konnte, wird „ std::nullopt “ zurückgegeben.
Ähnlich wie
int to_int = qgetenv(varName).toInt(ok, 0);, mit dem Unterschied, dass diese Funktion wesentlich schneller ist und keine Ausnahmen auslösen kann.
Wenn ein Wert von Null semantisch mit einer leeren oder nicht gesetzten Variablen gleichbedeutend ist, können Anwendungen
auto value = qEnvironmentVariableIntegerValue(varName).value_or(0);Beachten Sie in diesem Fall, dass auch Fehler beim Parsen eines Werts den Wert Null ergeben.
Wenn jedoch der Wert Null dazu verwendet werden kann, bestimmte Funktionen zu deaktivieren, können Anwendungen den zurückgegebenen Wert ` std::optional ` mit Null vergleichen, was nur dann wahr ist, wenn die Variable gesetzt war und eine Zahl enthielt, die als Null interpretiert wurde, wie in:
bool equals_zero = qEnvironmentVariableIntegerValue(varName) == 0;Diese Funktion wurde in Qt 6.10 eingeführt.
Siehe auch „ qgetenv()“, „ qEnvironmentVariable()“ und „ qEnvironmentVariableIsSet()“.
[noexcept] bool qEnvironmentVariableIsEmpty(const char *varName)
Gibt zurück, ob die Umgebungsvariable „ varName “ leer ist.
Entspricht
bool is_empty = qgetenv(varName).isEmpty();, mit dem Unterschied, dass diese Funktion potenziell wesentlich schneller ist und keine Ausnahmen auslösen kann.
Siehe auch qgetenv(), qEnvironmentVariable() und qEnvironmentVariableIsSet().
[noexcept] bool qEnvironmentVariableIsSet(const char *varName)
Gibt zurück, ob die Umgebungsvariable „ varName “ gesetzt ist.
Entspricht
bool is_not_null = !qgetenv(varName).isNull();, mit dem Unterschied, dass diese Funktion potenziell wesentlich schneller ist und keine Ausnahmen auslösen kann.
Siehe auch qgetenv(), qEnvironmentVariable(), qEnvironmentVariableIsEmpty() und qEnvironmentVariableIntegerValue().
QByteArray qgetenv(const char *varName)
Gibt den Wert der Umgebungsvariablen mit dem Namen „ varName “ als „ QByteArray “ zurück. Wird in der Umgebung keine Variable mit diesem Namen gefunden, gibt diese Funktion ein standardkonstruiertes „ QByteArray “ zurück.
Die Qt-Funktionen zur Bearbeitung der Umgebungsvariablen sind threadsicher, dies setzt jedoch voraus, dass die entsprechenden Funktionen der C-Bibliothek wie „getenv“ und „putenv“ nicht direkt aufgerufen werden.
Um die Daten in eine ` QString ` zu konvertieren, verwende ` QString::fromLocal8Bit()`.
Hinweis: Unter Windows kann `qgetenv()` zu Datenverlusten führen, wenn die ursprüngliche Zeichenkette Unicode-Zeichen enthält, die in der ANSI-Kodierung nicht darstellbar sind. Verwenden Sie stattdessen ` qEnvironmentVariable()`. Auf Unix-Systemen arbeitet diese Funktion verlustfrei.
Hinweis: Diese Funktion ist threadsicher.
Siehe auch qputenv(), qEnvironmentVariable(), qEnvironmentVariableIsSet(), qEnvironmentVariableIsEmpty() und qEnvironmentVariableIntegerValue().
bool qputenv(const char *varName, QByteArrayView value)
Diese Funktion setzt den Wert „ value “ der Umgebungsvariablen „ varName “. Die Variable wird angelegt, falls sie noch nicht existiert. Die Funktion gibt 0 zurück, wenn die Variable nicht gesetzt werden konnte.
Der Aufruf von `qputenv` mit einem leeren Wert entfernt die Umgebungsvariable unter Windows und setzt sie unter Unix (allerdings leer). Verwenden Sie für ein vollständig portables Verhalten vorzugsweise ` qunsetenv()`.
Hinweis: qputenv () wurde eingeführt, da putenv() aus der Standard-C-Bibliothek in VC2005 (und späteren Versionen) als veraltet markiert wurde. qputenv() verwendet die Ersatzfunktion in VC und ruft auf allen anderen Plattformen die Implementierung der Standard-C-Bibliothek auf.
Hinweis: In Qt-Versionen vor 6.5 lautete das Argument für ` value ` ` QByteArray` und nicht ` QByteArrayView`.
Siehe auch qgetenv() und qEnvironmentVariable().
bool qunsetenv(const char *varName)
Diese Funktion löscht die Variable „ varName “ aus der Umgebung.
Gibt bei Erfolg „ true “ zurück.
Siehe auch „ qputenv()“, „ qgetenv()“ und „ 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.