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 |
シグナル
void | bottomChanged(double bottom) |
void | decimalsChanged(int decimals) |
void | notationChanged(QDoubleValidator::Notation notation) |
void | topChanged(double top) |
詳細説明
QDoubleValidator は、上限、下限、および小数点以下の桁数の制限を提供します。
setRange() またはsetBottom() とsetTop() を使用して、1 回の呼び出しで許容範囲を設定できます。小数点以下の桁数は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 は、見つけた桁グループの区切り文字の配置 (これもロケールに依存する) をチェックしないが、QLocale::RejectGroupSeparator がlocale().numberOptions()
で設定されている場合は、それを含む入力を拒否する。
QLocale::numberOptions()、QLocale::decimalPoint()、QLocale::exponential()、QLocale::negativeSign()も参照のこと 。
プロパティ・ドキュメンテーション
bottom : double
このプロパティはバリデータの最小許容値を保持する。
デフォルトでは、このプロパティには -infinity が格納される。
アクセス関数
double | bottom() const |
void | setBottom(double) |
通知シグナル:
void | bottomChanged(double bottom) |
setRange()も参照 。
decimals : int
このプロパティは、バリデータの小数点以下の最大桁数を保持する。
デフォルトでは、このプロパティには -1 が格納される。
アクセス関数:
int | decimals() const |
void | setDecimals(int) |
通知シグナル:
void | decimalsChanged(int decimals) |
setRange()も参照 。
notation : Notation
このプロパティは、文字列が数値をどのように表現できるかの表記法を保持する。
デフォルトでは、このプロパティはScientificNotation に設定されています。
アクセス関数
QDoubleValidator::Notation | notation() const |
void | setNotation(QDoubleValidator::Notation) |
Notifier シグナル:
void | notationChanged(QDoubleValidator::Notation notation) |
Notationも参照のこと 。
top : double
このプロパティはバリデータの最大許容値を保持する。
デフォルトでは、このプロパティには無限大の値が格納されます。
アクセス関数
double | top() const |
void | setTop(double) |
通知シグナル:
void | topChanged(double top) |
setRange()も参照 。
メンバ関数のドキュメント
[explicit]
QDoubleValidator::QDoubleValidator(QObject *parent = nullptr)
バリデータオブジェクトをparent オブジェクトで作成します。
QDoubleValidator::QDoubleValidator(double bottom, double top, int decimals, QObject *parent = nullptr)
バリデータオブジェクトをparent オブジェクトで作成します。このバリデータはbottom からtop までの倍数で、小数点以下がdecimals 桁までのものを受け取ります。
[virtual noexcept]
QDoubleValidator::~QDoubleValidator()
バリデータを破棄する。
[override virtual, since 6.3]
void QDoubleValidator::fixup(QString &input) const
再実装:QValidator::fixup(QString &input) const.
これはオーバーロードされた関数です。
input の文字列をAcceptable の double 表現に固定しようとします。
数値のフォーマットは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 までの倍数を受け付けるようにバリデータを設定し、 小数点以下の桁数は最大でもdecimals とします。
注意: 小数の桁数を -1 に設定すると、実質的に無制限になります。これはデフォルトのバリデータでも使用する値です。
void QDoubleValidator::setRange(double minimum, double maximum)
これはオーバーロードされた関数である。
小数点以下の桁数を変更せずに、minimum からmaximum までの倍数を受け付けるようにバリデータを設定します。
[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 を返します。
注意:有効範囲が正の倍数(例えば、0.0 から 100.0)のみで構成され、input が負の倍数の場合は、Invalid が返される。notation() がStandardNotation に設定され、入力に有効範囲の double が持つ桁数よりも多い桁数が小数点の前に含まれる場合、Invalid が返される。notation() がScientificNotation で、入力が有効範囲にない場合、Intermediate が返される。指数を変更することで、有効な値になる可能性がある。
デフォルトでは、このバリデータはpos パラメータを使用しません。
© 2025 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.