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() に渡して数値を取得します。
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()も参照のこと 。
プロパティ 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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。