728x90

QLineEdit을 사용할 때 입력 값을 제한하고 싶을 때가 있습니다. 이럴 때 사용할 수 있는게 QValidator 입니다.

 

QValidator Class | Qt GUI 5.15.3

QValidator Class The QValidator class provides validation of input text. More... Public Types enum State { Invalid, Intermediate, Acceptable } Public Functions Signals Detailed Description The class itself is abstract. Two subclasses, QIntValidator and QDo

doc.qt.io

QValidator는 QIntValidator, QDoubleValidator, QRegExpValidator가 있습니다. QIntValidator는 정수 값 제한, QDoubleValidator는 소수형 데이터 제한, QRegExpValidator는 정규식 표현을 통해 제한을 시킬 수 있습니다.

void setValidator()
{
    QLineEdit* lineedit = new QLineEdit(this);
    QIntValidator* intValidator = new QIntValidator(0,100);
    lineedit->setValidator(intValidator);
    
    QDoubleValidator* doubleValidator = new QDoubleValidator(0.0, 20.0, 2);
    doubleValidator->setNotation(QDoubleValidator::StandardNotation);
    QLineEdit* lineedit = new QLineEdit(this);
    lineedit->setValidator(doubleValidator);
    
    QRegExp qRegExp("^[0-9]{1,2}[.][0-9]{1,2}$");       // 2자리 정수, 소수로 입력
    QRegExpValidator* regValidator = new QRegExpValidator(qRegExp);    
    lineedit->setValidator(regValidator);
}

QDoubleValidator의 경우 Notation을 설정하지 않으면 정수 부분이 제대로 제한이 걸리지 않습니다.

QRegExpValidator은 특정 상황에서 제한을 걸 때 유용하게 사용할 수 있습니다. 아이피를 입력받는다던가 비밀번호를 입력받는다던가 하는 상황에서 유용합니다.

 

자주 사용하거나 유용한 정규 표현식은 어포스트님 블로그에 정리되어 있는 이 글를 참고하시면 좋습니다.

 

복사해서 바로 사용하는 자주 사용하는 정규표현식(Regular Expression) Top 20

1. 영문자 소문자, 숫자, "-", "_" 로만 구성된 길이 2 ~ 10자리 사이 문자열 /^[a-z0-9_-]{2,10}$/ 2. 신용카드 번호 19자리 숫자와 "-": /^[0-9-]{19}$/ 4-4-4-4 체크: /^[0-9]{4}[-\s\.]?[0-9]{4}[-\s\.]?[0-9..

blogpack.tistory.com

 

728x90

+ Recent posts