QValidator Class

QValidator クラスは、入力テキストのバリデーションを行います。詳細...

Header: #include <QValidator>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
Inherits: QObject
Inherited By:

QDoubleValidator, QIntValidator, and 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() はすべてのサブクラスで実装する必要があります。この関数は、引数が有効かどうかによってInvalidIntermediateAcceptable のいずれかを返します(サブクラスの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() で設定します。これは通常、ローカライズされたデータをパースするために使用されます。たとえば、QIntValidatorQDoubleValidator は、整数や倍数のローカライズされた表現をパースするために使用します。

QValidatorは通常、QLineEditQSpinBoxQComboBox で使用されます。

QIntValidator,QDoubleValidator,QRegularExpressionValidator,行編集の例も参照のこと

メンバ型のドキュメント

enum QValidator::State

この列挙型は、検証された文字列が存在しうる状態を定義します。

定数説明
QValidator::Invalid0文字列は明らかに無効である。
QValidator::Intermediate1文字列は妥当な中間値である。
QValidator::Acceptable2文字列は最終的な結果として受け入れられる、つまり有効である。

メンバ関数の説明

[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

Acceptable この仮想関数は、input がこのバリデータのルールに従って無効な場合はInvalid を返し、もう少し編集すれば入力が受け入れられそうな場合はIntermediate を返します (たとえば、10 から 99 までの整数を受け付けるウィジェットにユーザーが "4" と入力した場合など)。

この関数は、必要に応じてinputpos (カーソル位置) の両方を変更することができます。

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