QRegularExpressionValidator Class
QRegularExpressionValidator クラスは、文字列を正規表現と照合するために使用します。詳細...
Header: | #include <QRegularExpressionValidator> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
Inherits: | QValidator |
プロパティ
- regularExpression : QRegularExpression
パブリック関数
QRegularExpressionValidator(QObject *parent = nullptr) | |
QRegularExpressionValidator(const QRegularExpression &re, QObject *parent = nullptr) | |
virtual | ~QRegularExpressionValidator() |
QRegularExpression | regularExpression() const |
再実装パブリック関数
virtual QValidator::State | validate(QString &input, int &pos) const override |
パブリックスロット
void | setRegularExpression(const QRegularExpression &re) |
シグナル
void | regularExpressionChanged(const QRegularExpression &re) |
詳細説明
QRegularExpressionValidator は、正規表現 (regexp) を使用して、入力文字列がAcceptable 、Intermediate 、Invalid のいずれであるかを判定します。 正規表現は、QRegularExpressionValidator が構築されるときに提供されるか、または後で提供されます。
正規表現が文字列と部分的にマッチする場合、その結果はIntermediate と見なされます。例えば、""と "A "は正規表現[A-Z][0-9]に対してIntermediate となります(一方、"_"はInvalid となります)。
\\A
\\z
つまり、常に完全一致を試みます。
使用例
// regexp: optional '-' followed by between 1 and 3 digits QRegularExpression rx("-?\\d{1,3}"); QValidator *validator = new QRegularExpressionValidator(rx, this); QLineEdit *edit = new QLineEdit(this); edit->setValidator(validator);
以下にバリデータの例をいくつか示します。実際には、上記の例のように、通常はウィジェットに関連づけられます。
// integers 1 to 9999 QRegularExpression re("[1-9]\\d{0,3}"); // the validator treats the regexp as "^[1-9]\\d{0,3}$" QRegularExpressionValidator v(re, 0); QString s; int pos = 0; s = "0"; v.validate(s, pos); // returns Invalid s = "12345"; v.validate(s, pos); // returns Invalid s = "1"; v.validate(s, pos); // returns Acceptable re.setPattern("\\S+"); // one or more non-whitespace characters v.setRegularExpression(re); s = "myfile.txt"; v.validate(s, pos); // Returns Acceptable s = "my file.txt"; v.validate(s, pos); // Returns Invalid // A, B or C followed by exactly five digits followed by W, X, Y or Z re.setPattern("[A-C]\\d{5}[W-Z]"); v.setRegularExpression(re); s = "a12345Z"; v.validate(s, pos); // Returns Invalid s = "A12345Z"; v.validate(s, pos); // Returns Acceptable s = "B12"; v.validate(s, pos); // Returns Intermediate // match most 'readme' files re.setPattern("read\\S?me(\\.(txt|asc|1st))?"); re.setPatternOptions(QRegularExpression::CaseInsensitiveOption); v.setRegularExpression(re); s = "readme"; v.validate(s, pos); // Returns Acceptable s = "README.1ST"; v.validate(s, pos); // Returns Acceptable s = "read me.txt"; v.validate(s, pos); // Returns Invalid s = "readm"; v.validate(s, pos); // Returns Intermediate
QRegularExpression 、QIntValidator 、QDoubleValidatorも参照してください 。
プロパティ Documentation
regularExpression : QRegularExpression
このプロパティは、バリデーションに使用される正規表現を保持します。
デフォルトでは、このプロパティは空のパターンを持つ正規表現(したがって、任意の文字列にマッチする)を含む。
アクセス関数:
QRegularExpression | regularExpression() const |
void | setRegularExpression(const QRegularExpression &re) |
ノーティファイアシグナル:
void | regularExpressionChanged(const QRegularExpression &re) |
メンバ関数 ドキュメント
[explicit]
QRegularExpressionValidator::QRegularExpressionValidator(QObject *parent = nullptr)
任意の文字列 (空のものも含む) を有効なものとして受け付けるバリデータをparent オブジェクトで作成します。
[explicit]
QRegularExpressionValidator::QRegularExpressionValidator(const QRegularExpression &re, QObject *parent = nullptr)
正規表現re にマッチするすべての文字列を受け付けるparent オブジェクトを含むバリデータを作成します。
[virtual noexcept]
QRegularExpressionValidator::~QRegularExpressionValidator()
バリデータを破棄します。
[override virtual]
QValidator::State QRegularExpressionValidator::validate(QString &input, int &pos) const
バリデータを破棄します:QValidator::validate(QString &input, int &pos) const.
input がこのバリデータの正規表現にマッチした場合はAcceptable を返し、 部分的にマッチした場合はIntermediate (つまり、有効な文字を追加すればマッチする可能性がある)、input にマッチしなかった場合はInvalid を返します。
input にマッチしなかった場合、pos パラメータはinput パラメータの長さに設定される。
例えば、正規表現が\wdd(word-character, digit, digit)の場合、"A57 "はAcceptable 、"E5 "はIntermediate 、"+9 "はInvalid である。
QRegularExpression::match()も参照してください 。
©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。