<QtEnvironmentVariables>
環境変数を扱うためのヘルパー関数。詳細...
| Header: | #include <QtEnvironmentVariables> |
関数
| 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) |
詳細な説明
このヘッダーに含まれる関数は、環境変数の操作に使用されます。
スレッドセーフ性
Qt の環境操作関数はスレッドセーフですが、これを利用するには、getenv やputenv といった C ライブラリの同等の関数を直接呼び出さないことが条件となります。
これは、アプリケーションによって読み込まれるサードパーティ製ライブラリにも当てはまります。そのようなライブラリが、セカンダリスレッドから環境を操作するために安全でない関数を使用している場合は、ライブラリを読み込んだり、セカンダリスレッドを作成したりする前に、メインスレッドですべての環境設定を行うことをお勧めします。
関数のドキュメント
QString qEnvironmentVariable(const char *varName, const QString &defaultValue)
QString qEnvironmentVariable(const char *varName)
これらの関数は、環境変数varName の値をQString として返します。環境内にvarName という変数が存在せず、かつdefaultValue が指定された場合、defaultValue が返されます。それ以外の場合は、QString()が返されます。
Qtの環境操作関数はスレッドセーフですが、これにはgetenvやputenvといったCライブラリの同等の関数が直接呼び出されないことが条件となります。
以下の表は、qgetenv() とqEnvironmentVariable() のどちらを選択すべきかを説明しています:
| 条件 | 推奨事項 |
|---|---|
| 変数にファイルパスやユーザー入力テキストが含まれている場合 | qEnvironmentVariable() |
| Windows固有のコード | qEnvironmentVariable() |
| Unix固有のコード。宛先変数がQString ではなく、かつ/またはQt XML以外のAPIとの連携に使用されている場合 | qgetenv() |
| 宛先変数がQString | qEnvironmentVariable() |
| 宛先変数はQByteArray またはstd::stringである | qgetenv() |
注: Unixシステムでは 、元の文字列にロケールコーデックでデコードできない任意のバイナリデータが含まれている場合、この関数の使用によりデータが失われる可能性があります。その場合は、代わりに `qgetenv()` を使用してください。Windows では、この関数はデータを失うことはありません。
注:変数名 varName には 、US-ASCII 文字のみを含める必要があります。
関連項目: qputenv()、qgetenv()、qEnvironmentVariableIsSet()、qEnvironmentVariableIsEmpty()、およびqEnvironmentVariableIntegerValue()。
[noexcept] int qEnvironmentVariableIntValue(const char *varName, bool *ok = nullptr)
環境変数varName の数値値を返します。ok がnullでない場合、変換の成否に応じて*ok をtrue またはfalse に設定します。
以下と同等ですが
int to_int = qgetenv(varName).toInt(ok, 0);と同等ですが、処理がはるかに高速であり、例外をスローすることはできません。
qgetenv()、qEnvironmentVariable()、およびqEnvironmentVariableIsSet()も参照してください 。
[noexcept, since 6.10] std::optional<qint64> qEnvironmentVariableIntegerValue(const char *varName)
環境変数 `varName` の数値値を返します。変数が設定されていない場合、または整数として解析できなかった場合は、std::nullopt を返します。
以下と同様ですが
int to_int = qgetenv(varName).toInt(ok, 0);に似ていますが、処理がはるかに高速であり、例外をスローすることはできません。
値がゼロであることが、空の変数や未設定の変数と意味的に同等である場合、アプリケーションでは
auto value = qEnvironmentVariableIntegerValue(varName).value_or(0);この場合、値の解析に失敗しても 0 が返されることに注意してください。
しかし、値 0 を使用して一部の機能を無効にできる場合、アプリケーションは返された `std::optional ` を 0 と比較することができます。これは、変数が設定されており、その値が 0 として解析された数値である場合にのみ真となります。例:
bool equals_zero = qEnvironmentVariableIntegerValue(varName) == 0;この関数は Qt 6.10 で導入されました。
qgetenv()、qEnvironmentVariable()、およびqEnvironmentVariableIsSet()も参照してください 。
[noexcept] bool qEnvironmentVariableIsEmpty(const char *varName)
環境変数varName が空であるかどうかを返します。
以下と同等ですが
bool is_empty = qgetenv(varName).isEmpty();と同等ですが、処理がはるかに高速になる可能性があり、例外をスローすることはできません。
qgetenv()、qEnvironmentVariable()、およびqEnvironmentVariableIsSet()も参照してください 。
[noexcept] bool qEnvironmentVariableIsSet(const char *varName)
環境変数 `varName ` が設定されているかどうかを返します。
以下と同等ですが、
bool is_not_null = !qgetenv(varName).isNull();と同等ですが、処理がはるかに高速になる可能性があり、例外をスローすることはできません。
qgetenv()、qEnvironmentVariable()、qEnvironmentVariableIsEmpty()、およびqEnvironmentVariableIntegerValue()も参照してください 。
QByteArray qgetenv(const char *varName)
名前が `varName ` の環境変数の値を、`QByteArray` として返します。環境内にその名前の変数が見つからない場合、この関数はデフォルト構築された `QByteArray` を返します。
Qtの環境操作関数はスレッドセーフですが、これを利用するには、getenvやputenvといったCライブラリの同等の関数を直接呼び出さないことが条件となります。
データをQString に変換するには、QString::fromLocal8Bit()を使用します。
注:デスクトップ版の Windowsでは 、元の文字列に ANSI エンコーディングでは表現できない Unicode 文字が含まれている場合、qgetenv() を使用するとデータが失われる可能性があります。代わりにqEnvironmentVariable() を使用してください。Unix システムでは、この関数はデータを失うことはありません。
注: この関数はスレッドセーフです。
関連項目: qputenv()、qEnvironmentVariable()、qEnvironmentVariableIsSet()、qEnvironmentVariableIsEmpty()、およびqEnvironmentVariableIntegerValue()。
bool qputenv(const char *varName, QByteArrayView value)
この関数は、varName という名前の環境変数のvalue を設定します。変数が存在しない場合は、その変数を作成します。変数の設定に失敗した場合は0を返します。
qputenv を空の値で呼び出すと、Windows では環境変数が削除され、Unix では環境変数が設定されます(ただし値は空のままです)。完全に移植性のある動作を得るには、qunsetenv() を使用することをお勧めします。
注:qputenv() が 導入されたのは、標準 C ライブラリの putenv() が VC2005(およびそれ以降のバージョン)で非推奨となったためです。qputenv() は、VC では置換関数を使用し、それ以外のすべてのプラットフォームでは標準 C ライブラリの実装を呼び出します。
注: Qt 6.5 以前のバージョンでは 、value の引数はQByteArrayView ではなく、QByteArray でした。
関連項目: qgetenv() およびqEnvironmentVariable()。
bool qunsetenv(const char *varName)
この関数は、環境から変数 `varName ` を削除します。
成功した場合、true を返します。
qputenv()、qgetenv()、および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.