이 페이지에서

QDoubleValidator Class

QDoubleValidator 클래스는 부동소수점 숫자에 대한 범위 검증을 제공합니다. 더 보기...

헤더: #include <QDoubleValidator>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
상속: QValidator

공개 유형

enum Notation { StandardNotation, ScientificNotation }

속성

공개 함수

QDoubleValidator(QObject *parent = nullptr)
QDoubleValidator(double bottom, double top, int decimals, QObject *parent = nullptr)
virtual ~QDoubleValidator()
double bottom() const
int decimals() const
QDoubleValidator::Notation notation() const
void setBottom(double)
void setDecimals(int)
void setNotation(QDoubleValidator::Notation)
void setRange(double minimum, double maximum, int decimals)
void setRange(double minimum, double maximum)
void setTop(double)
double top() const

재구현된 공용 함수

(since 6.3) virtual void fixup(QString &input) const override
virtual QValidator::State validate(QString &input, int &pos) const override

상세 설명

QDoubleValidator는 상한값, 하한값 및 소수점 뒤 자릿수 제한을 제공합니다.

setRange()를 한 번 호출하거나, setBottom() 및 setTop()를 사용하여 허용 범위를 설정할 수 있습니다. setDecimals()를 사용하여 소수점 이하 자릿수를 설정합니다. validate() 함수는 유효성 검사 상태를 반환합니다.

QDoubleValidator는 locale()를 사용하여 숫자를 해석합니다. 예를 들어, 독일어 로케일에서는 "1,234"가 소수 1.234로 인정됩니다. 아랍어 로케일에서는 QDoubleValidator가 아랍 숫자를 허용합니다.

참고: locale()에서설정된 QLocale::NumberOptions 도 숫자 해석 방식에 영향을 미칩니다. 예를 들어, QLocale::RejectGroupSeparator 는 기본적으로 설정되어 있지 않으므로( "C" 로케일 제외), 유효성 검사기는 그룹 구분자를 허용합니다. 문자열이 유효성 검사를 통과하면, locale().toDouble()에 전달하여 숫자 값을 얻으십시오.

QIntValidator, QRegularExpressionValidator, QLocale::toDouble() 및 ‘Line Edits 예제’도 참조하십시오 .

멤버 유형 문서

enum QDoubleValidator::Notation

이 열거형은 double 값을 입력할 때 허용되는 표기법을 정의합니다.

상수값설명
QDoubleValidator::StandardNotation0문자열은 표준 형식으로 작성되며, 정수 부분에 선택적으로 구분 기호가 뒤따르고 소수 부분이 이어집니다(예: "0.015").
QDoubleValidator::ScientificNotation1문자열은 과학적 표기법으로 작성되며, 표준 형식에 지수 부분이 선택적으로 추가됩니다(예: "1.5E-2").

정수 부분에는 평소와 같이 부호가 포함될 수 있습니다. 이 부분과 소수부, 지수 및 숫자 그룹화를 나타내는 구분 기호는 로케일에 따라 다릅니다. QDoubleValidator 는 발견된 숫자 그룹화 구분 기호의 위치(이 또한 로케일에 따라 달라짐)를 확인하지는 않지만, locale().numberOptions() 에서 QLocale::RejectGroupSeparator 가 설정된 경우 해당 기호가 포함된 입력은 거부합니다.

QLocale::numberOptions(), QLocale::decimalPoint(), QLocale::exponential(), QLocale::negativeSign()도 참조하십시오 .

속성 설명

bottom : double

이 속성은 유효성 검사기가 허용하는 최소 값을 저장합니다.

기본적으로 이 속성의 값은 -무한대입니다.

액세스 함수:

double bottom() const
void setBottom(double)

setRange()도 참조하십시오 .

decimals : int

이 속성은 유효성 검사기의 소수점 뒤 최대 자릿수를 지정합니다.

기본적으로 이 속성의 값은 -1이며, 이는 소수점 뒤 자릿수에 제한이 없음을 의미합니다.

액세스 함수:

int decimals() const
void setDecimals(int)

setRange()도 참조하십시오 .

notation : Notation

이 속성은 문자열이 숫자를 어떻게 표현할 수 있는지에 대한 표기법을 담고 있습니다.

기본적으로 이 속성은 ` ScientificNotation`로 설정되어 있습니다.

액세스 함수:

QDoubleValidator::Notation notation() const
void setNotation(QDoubleValidator::Notation)

Notation도 참조하십시오 .

top : double

이 속성은 유효성 검사기가 허용하는 최대 값을 저장합니다.

기본적으로 이 속성의 값은 무한대입니다.

액세스 함수:

double top() const
void setTop(double)

setRange()도 참조하십시오 .

멤버 함수 설명서

[explicit] QDoubleValidator::QDoubleValidator(QObject *parent = nullptr)

parent 객체를 사용하여, 모든 double 값을 허용하는 유효성 검사기 객체를 생성합니다.

QDoubleValidator::QDoubleValidator(double bottom, double top, int decimals, QObject *parent = nullptr)

parent 객체를 사용하여 유효성 검사기 객체를 생성합니다. 이 유효성 검사기는 bottom 부터 top 까지(해당 값 포함)의 double 값을 허용하며, 소수점 뒤 자릿수는 최대 decimals 까지 허용합니다.

[virtual noexcept] QDoubleValidator::~QDoubleValidator()

밸리데이터를 삭제합니다.

[override virtual, since 6.3] void QDoubleValidator::fixup(QString &input) const

QValidator::fixup(QString &input) const를 재구현합니다.

input 문자열을 double 형식의 Acceptable 표현으로 변환하려고 시도합니다.

숫자의 형식은 notation(), decimals(), locale() 및 후자의 numberOptions()에 의해 결정됩니다.

notation()을 준수하기 위해, ScientificNotation 가 사용될 경우 고정값은 정규화된 형태로 표현되며, 이는 0이 아닌 모든 값이 소수점 앞에 0이 아닌 자릿수를 하나 갖게 됨을 의미합니다.

QString input = "0.98765e2";
QDoubleValidator val;
val.setLocale(QLocale::C);
val.setNotation(QDoubleValidator::ScientificNotation);
val.fixup(input); // input == "9.8765e+01"

decimals()을 준수하기 위해, -1 인 경우 사용되는 자릿수는 QLocale::FloatingPointShortest 에 의해 결정됩니다. 그렇지 않은 경우, 숫자의 소수 부분이 decimals()을 초과하면 (적절한 경우 반올림과 함께) 잘립니다. notation()이 ScientificNotation 인 경우, 이는 숫자가 정규화된 형태로 변환된 후에 수행됩니다.

input = "-1234.6789";
val.setDecimals(2);
val.setLocale(QLocale::C);
val.setNotation(QDoubleValidator::StandardNotation);
val.fixup(input); // input == "-1234.68"

참고: decimals()가 std::numeric_limits<double>::digits10 보다 큰 값으로 설정되어 있고, 문자열이 이보다 많은 자릿수를 제공하는경우 , 소수 부분의 해당 자릿수를 초과하는 자릿수가 변경될 수 있습니다. 결과 문자열은 double 로 파싱되었을 때 동일한 부동 소수점 숫자를 인코딩해야 합니다.

이 함수는 Qt 6.3에서 도입되었습니다.

void QDoubleValidator::setRange(double minimum, double maximum, int decimals)

유효성 검사기가 minimum 부터 maximum 까지(이 두 값 포함)의 double 값을 허용하도록 설정하며, 소수점 뒤 자릿수는 최대 decimals 개까지 허용합니다.

참고: 소수점 자릿수를 -1로설정하면 사실상 제한 없이 허용하는 것과 같습니다. 이는 기본 생성된 유효성 검사기에서도 사용되는 값입니다.

void QDoubleValidator::setRange(double minimum, double maximum)

소수점 이하 자릿수를 변경하지 않은 채로 minimum 부터 maximum 까지(해당 값 포함)의 double 값을 허용하도록 유효성 검사기를 설정합니다.

이것은 오버로드된 함수입니다.

[override virtual] QValidator::State QDoubleValidator::validate(QString &input, int &pos) const

QValidator::validate(QString &input, int &pos) const를 재구현합니다.

문자열 input 이 올바른 형식이며 유효한 범위의 double 값을 포함하고 있는 경우 Acceptable 를 반환합니다.

input 가 잘못된 형식이거나 범위를 벗어난 double 값을 포함하는 경우 Intermediate 를 반환합니다.

input 이 double을 나타내지 않거나 소수점 뒤 자릿수가 너무 많으면 Invalid 을 반환합니다.

참고: 유효 범위가 양의 double만 포함하는 경우(예: 0.0~100.0)에 input 가 음의 double인 경우, Invalid 가 반환됩니다. notation()가 StandardNotation 로 설정되어 있고, 입력값의 소수점 앞 자릿수가 유효 범위의 double이 가질 수 있는 자릿수보다 많은 경우, Invalid 가 반환됩니다. notation()가 ScientificNotation 인 경우, 입력값이 유효한 범위에 속하지 않으면 Intermediate 가 반환됩니다. 지수를 변경하면 해당 값이 유효해질 수도 있습니다.

기본적으로 이 유효성 검사기는 ` 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.