QDoubleValidator Class
QDoubleValidator クラスは、浮動小数点数の範囲チェック機能を提供します。詳細...
| ヘッダー: | #include <QDoubleValidator> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| 継承元: | QValidator |
パブリック型
| enum | Notation { StandardNotation, ScientificNotation } |
プロパティ
パブリック関数
| QDoubleValidator(QObject *parent = nullptr) | |
| QDoubleValidator(double bottom, double top, int decimals, QObject *parent = nullptr) | |
| virtual | ~QDoubleValidator() |
| double | bottom() const |
| int | decimals() const |
| QDoubleValidator::Notation | notation() const |
| void | setBottom(double) |
| void | setDecimals(int) |
| void | setNotation(QDoubleValidator::Notation) |
| void | setRange(double minimum, double maximum, int decimals) |
| void | setRange(double minimum, double maximum) |
| void | setTop(double) |
| double | top() const |
再実装されたパブリック関数
(since 6.3) virtual void | fixup(QString &input) const override |
| virtual QValidator::State | validate(QString &input, int &pos) const override |
詳細な説明
QDoubleValidator は、上限、下限、および小数点以下の桁数の制限を提供します。
setRange() を 1 回呼び出すか、setBottom() およびsetTop() を使用して、許容範囲を設定できます。小数点以下の桁数は、setDecimals() で設定します。validate() 関数は、検証状態を返します。
QDoubleValidator は、locale() を使用して数値を解釈します。たとえば、ドイツ語のロケールでは、「1,234」は小数 1.234 として受け入れられます。アラビア語のロケールでは、QDoubleValidator はアラビア数字を受け入れます。
注: locale()で設定された QLocale::NumberOptions も 、数値の解釈方法に影響を与えます。例えば、QLocale::RejectGroupSeparator は デフォルトでは設定されていないため("C" ロケールを除く)、バリデータはグループ区切り記号を受け入れます。文字列が検証に合格した場合は、locale()のtoDouble()に渡し、数値を取得してください。
QIntValidator 、QRegularExpressionValidator 、QLocale::toDouble()、および「行編集の例」も参照してください 。
メンバ型のドキュメント
enum QDoubleValidator::Notation
この列挙型は、double型を入力する際に使用可能な表記法を定義します。
| 定数 | 値 | 説明 |
|---|---|---|
QDoubleValidator::StandardNotation | 0 | 文字列は標準形式で記述されます。整数部に、必要に応じて区切り文字と小数部が続きます。例:"0.015" 。 |
QDoubleValidator::ScientificNotation | 1 | 文字列は科学表記で記述されます。これは、標準形式に指数部分をオプションで追加したもので、例えば"1.5E-2" などです。 |
整数部には、通常通り、符号が含まれる場合があります。 これおよび小数部、指数、および桁区切り用の区切り文字は、ロケールに依存します。QDoubleValidator は、検出した桁区切り区切り文字の位置(これもロケールに依存します)はチェックしませんが、locale().numberOptions() でQLocale::RejectGroupSeparator が設定されている場合、それらを含む入力は拒否されます。
QLocale::numberOptions()、QLocale::decimalPoint()、QLocale::exponential()、およびQLocale::negativeSign()も参照してください 。
プロパティのドキュメント
bottom : double
このプロパティには、バリデータが許容する最小値が格納されます
デフォルトでは、このプロパティの値は-無限大です。
アクセス関数:
| double | bottom() const |
| void | setBottom(double) |
関連項目: setRange()。
decimals : int
このプロパティには、バリデータが許容する小数点以下の最大桁数が格納されます
デフォルトでは、このプロパティの値は -1 となっており、これは桁数に制限がないことを意味します。
アクセス関数:
| int | decimals() const |
| void | setDecimals(int) |
setRange()も参照してください 。
notation : Notation
このプロパティは、文字列が数値をどのように表現できるかを示す表記法を保持します
デフォルトでは、このプロパティは `ScientificNotation` に設定されています。
アクセス関数:
| QDoubleValidator::Notation | notation() const |
| void | setNotation(QDoubleValidator::Notation) |
「Notation」も参照してください 。
top : double
このプロパティには、バリデータが許容する最大値が格納されます
デフォルトでは、このプロパティの値は無限大です。
アクセス関数:
| double | top() const |
| void | setTop(double) |
関連項目: setRange()。
メンバ関数のドキュメント
[explicit] QDoubleValidator::QDoubleValidator(QObject *parent = nullptr)
任意のdouble値を受け入れるparent オブジェクトを持つバリデータオブジェクトを作成します。
QDoubleValidator::QDoubleValidator(double bottom, double top, int decimals, QObject *parent = nullptr)
parent オブジェクトを使用して、バリデータオブジェクトを作成します。このバリデータは、bottom からtop までの範囲(両端を含む)のdouble型値を受け入れ、小数点以下の桁数は最大decimals 桁まで許容します。
[virtual noexcept] QDoubleValidator::~QDoubleValidator()
バリデータを除去します。
[override virtual, since 6.3] void QDoubleValidator::fixup(QString &input) const
QValidator::fixup(QString &input) const を再実装します。
input の文字列を、double 型のAcceptable 表現に固定しようと試みます。
数値の形式は、notation()、decimals()、locale()、および後者のnumberOptions() によって決定されます。
notation() に準拠するため、ScientificNotation が使用される場合、固定値は正規化された形式で表現されます。つまり、ゼロ以外の値には、小数点の前に 1 桁のゼロ以外の数字が含まれることになります。
QString input = "0.98765e2";
QDoubleValidator val;
val.setLocale(QLocale::C);
val.setNotation(QDoubleValidator::ScientificNotation);
val.fixup(input); // input == "9.8765e+01"decimals() に準拠するため、-1 の場合、使用される桁数はQLocale::FloatingPointShortest によって決定されます。それ以外の場合、数値の小数部分がdecimals() を超える長さである場合は、切り捨てられます(必要に応じて丸めが行われます)。notation() がScientificNotation の場合、これは数値が正規化された形式に変換された後に実行されます。
input = "-1234.6789";
val.setDecimals(2);
val.setLocale(QLocale::C);
val.setNotation(QDoubleValidator::StandardNotation);
val.fixup(input); // input == "-1234.68"注: decimals()が std::numeric_limits<double>::digits10 より大きい値に設定されており、かつ文字列がそれ以上の桁数を指定している場合 、小数部のそれ以上の桁の数値が変更される可能性があります。結果として得られる文字列は、double として解析された際に、元の浮動小数点数を正確に表現するものとします。
この関数は Qt 6.3 で導入されました。
void QDoubleValidator::setRange(double minimum, double maximum, int decimals)
バリデータが、minimum からmaximum までの範囲(両端を含む)の double 型を受け入れ、小数点以下の桁数を最大decimals 桁に制限するように設定します。
注: 小数点以下の桁数を -1 に設定すると 、実質的に無制限に設定されます。これは、デフォルトで生成されたバリデータでも使用される値です。
void QDoubleValidator::setRange(double minimum, double maximum)
小数点以下の桁数を変更することなく、minimum からmaximum までの範囲(両端を含む)の double 型を受け入れるようにバリデータの設定を行います。
これはオーバーロードされた関数です。
[override virtual] QValidator::State QDoubleValidator::validate(QString &input, int &pos) const
QValidator::validate(QString &input, int &pos) const を再実装します。
文字列 `input ` が正しい形式であり、有効範囲内の double 型を含む場合、Acceptable を返します。
input が不正な形式であるか、または範囲外の double を含む場合は、Intermediate を返します。
input が double 型を表していないか、小数点以下の桁数が多すぎる場合は、Invalid を返します。
注:有効範囲が正の double 型のみ(例:0.0 ~ 100.0)で構成されており、input が負の double 型である場合、Invalid が返されます。notation() がStandardNotation に設定されており、入力の小数点以下の桁数が有効範囲内の double 型が持つことができる桁数よりも多い場合、Invalid が返されます。notation()がScientificNotation に設定されており、入力が有効範囲外の場合、Intermediate が返されます。指数を変更することで、値が有効になる可能性があります。
デフォルトでは、このバリデータはpos パラメータを使用しません。
© 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.