QValidator Class
QValidator クラスは、入力テキストのバリデーションを行います。詳細...
ヘッダー | #include <QValidator> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
を継承する: | QObject |
によって継承される: | QDoubleValidator,QIntValidator, およびQRegularExpressionValidator |
パブリックな型
enum | State { Invalid, Intermediate, Acceptable } |
パブリック関数
QValidator(QObject *parent = nullptr) | |
virtual | ~QValidator() |
virtual void | fixup(QString &input) const |
QLocale | locale() const |
void | setLocale(const QLocale &locale) |
virtual QValidator::State | validate(QString &input, int &pos) const = 0 |
シグナル
void | changed() |
詳細説明
このクラス自体は抽象です。ふたつのサブクラスQIntValidator およびQDoubleValidator は基本的な数値範囲のチェックを行い、QRegularExpressionValidator は独自の正規表現を使用した一般的なチェックを行います。
組み込みのバリデータでは不十分な場合は、QValidator をサブクラス化することができます。このクラスにはvalidate() とfixup() の2つの仮想関数があります。
validate() はすべてのサブクラスで実装する必要があります。この関数は、引数が有効かどうかによって、Invalid 、Intermediate 、Acceptable のいずれかを返します(サブクラスのvalidの定義に対応)。
これら3つの状態については、少し説明が必要です。Invalid 。文字列は明らかに無効です。Intermediate 。文字列が不完全(まだ編集中)である場合、有効性の概念を適用するのは困難です。QValidatorでは、Intermediate を、明らかに無効でもなく、最終結果としても許容されない文字列のプロパティとして定義しています。Acceptable は、その文字列が最終結果として許容されることを意味します。Acceptable 文字列の入力中にもっともらしい中間状態となる文字列は、すべてIntermediate であると言えるかもしれない。
以下はその例である:
- 10から1000までの整数を受け付ける行編集の場合、42と123はAcceptable 、空文字列、5、1234はIntermediate 、"asdf "と10114はInvalid 。
- URLを受け付ける編集可能なコンボボックスの場合、整形式のURLはAcceptable 、"http://example.com/"はIntermediate (カット&ペースト操作で誤って末尾にカンマが入る可能性がある)、空文字列はIntermediate (新しいURLを入力する準備として、ユーザーがテキストをすべて選択して削除する可能性がある)、"http:///./"はInvalid 。
- 長さを受け付けるスピンボックスの場合、"11cm "と "1in "はAcceptable 、"11 "と空の文字列はIntermediate 、"http://example.com "と "hour "はInvalid 。
fixup()は、いくつかのユーザーエラーを修正するバリデータのために提供されます。デフォルトの実装は何もしません。QLineEditたとえば、ユーザーがEnterキー(またはReturnキー)を押したときに、 その内容が現在有効でない場合は、fixup ()をコールする。これにより、fixup() 関数は、Invalid 文字列をAcceptable にするためのマジックを実行することができます。
バリデータにはロケールがあり、setLocale() で設定します。これは通常、ローカライズされたデータをパースするために使用されます。たとえば、QIntValidator やQDoubleValidator は、整数や倍数のローカライズされた表現をパースするために使用します。
QIntValidator,QDoubleValidator,QRegularExpressionValidator,行編集の例も参照のこと 。
メンバ型ドキュメント
enum QValidator::State
この列挙型は、検証された文字列が存在しうる状態を定義する。
定数 | 値 | 説明 |
---|---|---|
QValidator::Invalid | 0 | 文字列は明らかに無効である。 |
QValidator::Intermediate | 1 | 文字列は妥当な中間値である。 |
QValidator::Acceptable | 2 | 文字列は最終的な結果として受け入れられる、つまり有効である。 |
メンバ関数ドキュメント
[explicit]
QValidator::QValidator(QObject *parent = nullptr)
バリデータを設定する。parent パラメータはQObject コンストラクタに渡されます。
[virtual noexcept]
QValidator::~QValidator()
バリデータを破棄し、使用していたストレージやその他のリソースを解放します。
[signal]
void QValidator::changed()
このシグナルは、文字列の有効性に影響を与える可能性のあるプロパティが変更されたときに発せられる。
[virtual]
void QValidator::fixup(QString &input) const
この関数は、input をこのバリデータのルールで有効なものに変更しようとします。この関数を呼び出した後で再度テストを行う必要があります。 デフォルトでは何も行いません。
この関数の再実装は、有効な文字列を生成しない場合でもinput を変更することができます。たとえば、ISBN バリデータは数字と "-" 以外のすべての文字を削除したくなるかもしれません。
QLocale QValidator::locale() const
バリデータのロケールを返します。ロケールはデフォルトで QLocale() と同じに初期化されます。
setLocale() およびQLocale::QLocale()も参照 ください。
void QValidator::setLocale(const QLocale &locale)
バリデータで使用するlocale を設定します。setLocale をコールしない限り、バリデータはQLocale::setDefault() で設定したデフォルトロケールを使用します。デフォルトのロケールが設定されていない場合は、 オペレーティングシステムのロケールを使用します。
locale() およびQLocale::setDefault()も参照ください 。
[pure virtual]
QValidator::State QValidator::validate(QString &input, int &pos) const
この仮想関数は、input がこのバリデータのルールに従って無効な場合はInvalid を返し、もう少し編集すれば入力が受け入れられそうな場合はIntermediate を返し (たとえば、10 から 99 までの整数を受け付けるウィジェットにユーザーが "4" を入力した場合など)、入力が有効な場合はAcceptable を返します。
この関数は、必要に応じてinput と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.