이 페이지에서

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()라는 두 개의 가상 함수가 있습니다.

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

이 세 가지 상태에 대해 설명이 필요합니다. ‘ Invalid ’ 문자열은 명백히 유효하지 않습니다. ‘ Intermediate ’은 다소 모호합니다. 문자열이 불완전할 때(아직 편집 중인 경우) 유효성 개념을 적용하기 어렵기 때문입니다. QValidator는 ‘ Intermediate ’을 명백히 유효하지도 않고 최종 결과로도 받아들일 수 없는 문자열의 속성으로 정의합니다. ‘ Acceptable ’은 해당 문자열이 최종 결과로 받아들여질 수 있음을 의미합니다. Acceptable 문자열을 입력하는 과정에서 타당한 중간 상태인 모든 문자열은 Intermediate 라고 할 수 있습니다.

다음은 몇 가지 예시입니다:

  • 10부터 1000까지(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 로 변환하는 등의 처리를 수행할 수 있습니다.

유효성 검사기(validator)에는 setLocale()로 설정된 로케일이 있습니다. 이는 일반적으로 현지화된 데이터를 구문 분석하는 데 사용됩니다. 예를 들어, QIntValidator 및 QDoubleValidator 는 정수 및 실수의 현지화된 표현을 구문 분석하는 데 이를 사용합니다.

QValidator는 일반적으로 QLineEdit, QSpinBox 및 QComboBox 와 함께 사용됩니다.

QIntValidator, QDoubleValidator, QRegularExpressionValidator 및 ‘Line Edits’ 예제도참조하십시오 .

멤버 유형 문서

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 유효성 검사기는 결과가 여전히 유효한 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 를, 약간의 수정만 더하면 입력이 유효해질 가능성이 있는 경우(예: 10에서 99 사이의 정수를 허용하는 위젯에 사용자가 “4”를 입력한 경우) Intermediate 를, 입력이 유효한 경우 Acceptable 를 반환합니다.

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

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