QDoubleValidator Class

QDoubleValidator クラスは、浮動小数点数の範囲チェックを行います。詳細...

Header: #include <QDoubleValidator>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Inherits: 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() に渡して数値を取得します。

QIntValidatorQRegularExpressionValidatorQLocale::toDouble()、行編集の例も参照

メンバ型ドキュメント

enum QDoubleValidator::Notation

この列挙型は、double を入力する際に許可される表記を定義します。

定数説明
QDoubleValidator::StandardNotation0"0.015"文字列は標準書式で記述され、整数部の後にセパレータと小数部がオプションで付加されます。
QDoubleValidator::ScientificNotation1"1.5E-2"文字列は科学的書式で記述され、標準書式に指数部を付加することもできる。

整数部には、通常通り符号を含めることができる。これは、分数部、指数部、および任意の桁グループの区切り文字とともに、ロケールに依存する。QDoubleValidator は、検出した桁グループの区切り文字の配置 (これもロケールに依存する) をチェックしないが、QLocale::RejectGroupSeparatorlocale().numberOptions() で設定されている場合は、それを含む入力を拒否する。

QLocale::numberOptions()、QLocale::decimalPoint()、QLocale::exponential()、QLocale::negativeSign()も参照のこと

プロパティ Documentation

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)

任意の double を受け付ける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 パラメータを使用しません。

©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。