QValidator Class

QValidator 클래스는 입력 텍스트의 유효성 검사를 제공합니다. 더 보기...

Header: #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

Signals

void changed()

상세 설명

클래스 자체는 추상적입니다. 두 개의 서브 클래스 QIntValidatorQDoubleValidator 는 기본적인 숫자 범위 검사를 제공하고 QRegularExpressionValidator 는 사용자 정의 정규식을 사용한 일반 검사를 제공합니다.

기본 제공 유효성 검사기로 충분하지 않은 경우 QValidator를 서브 클래싱할 수 있습니다. 이 클래스에는 validate() 및 fixup() 두 개의 가상 함수가 있습니다.

validate()는 모든 서브클래스에서 구현해야 합니다. 이 함수는 인수가 유효한지 여부에 따라 Invalid, Intermediate 또는 Acceptable 를 반환합니다(서브클래스의 유효 정의에 따라).

이 세 가지 상태는 약간의 설명이 필요합니다. 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는 일반적으로 QLineEdit, QSpinBoxQComboBox 과 함께 사용됩니다.

QIntValidator, QDoubleValidator, QRegularExpressionValidator줄 편집 예제도참조하세요 .

멤버 유형 문서

enum QValidator::State

이 열거형 유형은 유효성 검사된 문자열이 존재할 수 있는 상태를 정의합니다.

Constant설명
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 유효성 검사기는 결과가 여전히 유효한 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, 입력이 유효할 경우 를 반환합니다.

이 함수는 필요한 경우 inputpos (커서 위치)를 모두 변경할 수 있습니다.

© 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.