QJSValue Class

QJSValue 클래스는 Qt/JavaScript 데이터 타입을 위한 컨테이너 역할을 합니다. 더 보기...

헤더: #include <QJSValue>
CMake: find_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake: QT += qml

공용 타입

enum ErrorType { GenericError, RangeError, ReferenceError, SyntaxError, TypeError, URIError }
enum ObjectConversionBehavior { ConvertJSObjects, RetainJSObjects }
enum SpecialValue { UndefinedValue, NullValue }

공용 함수

QJSValue(QJSValue::SpecialValue value = UndefinedValue)
QJSValue(bool value)
QJSValue(const QLatin1String &value)
QJSValue(const QString &value)
QJSValue(const char *value)
QJSValue(double value)
QJSValue(int value)
QJSValue(uint value)
QJSValue(const QJSValue &other)
QJSValue(QJSValue &&other)
~QJSValue()
QJSValue call(const QJSValueList &args = QJSValueList()) const
QJSValue callAsConstructor(const QJSValueList &args = QJSValueList()) const
QJSValue callWithInstance(const QJSValue &instance, const QJSValueList &args = QJSValueList()) const
bool deleteProperty(const QString &name)
bool equals(const QJSValue &other) const
QJSValue::ErrorType errorType() const
bool hasOwnProperty(const QString &name) const
bool hasProperty(const QString &name) const
bool isArray() const
bool isBool() const
bool isCallable() const
bool isDate() const
bool isError() const
bool isNull() const
bool isNumber() const
bool isObject() const
bool isQMetaObject() const
bool isQObject() const
bool isRegExp() const
bool isString() const
bool isUndefined() const
bool isUrl() const
(until 6.9) bool isVariant() const
QJSValue property(const QString &name) const
QJSValue property(quint32 arrayIndex) const
QJSValue prototype() const
void setProperty(const QString &name, const QJSValue &value)
void setProperty(quint32 arrayIndex, const QJSValue &value)
void setPrototype(const QJSValue &prototype)
bool strictlyEquals(const QJSValue &other) const
bool toBool() const
QDateTime toDateTime() const
qint32 toInt() const
double toNumber() const
QJSPrimitiveValue toPrimitive() const
const QMetaObject *toQMetaObject() const
QObject *toQObject() const
QString toString() const
quint32 toUInt() const
QVariant toVariant(QJSValue::ObjectConversionBehavior behavior) const
QVariant toVariant() const
QJSValue &operator=(QJSValue &&other)
QJSValue &operator=(const QJSValue &other)

상세 설명

QJSValue는 ECMA-262 표준에 정의된 타입을 지원합니다: 기본 유형인 Undefined, Null, Boolean, Number, String과 객체 및 배열 유형이 그것입니다. 또한 QVariantQObject 과 같은 Qt/C++ 유형에 대한 기본 지원도 제공됩니다.

객체 기반 유형(Date 및 RegExp 포함)의 경우 QJSEngine 의 newT() 함수(예: QJSEngine::newObject())를 사용하여 원하는 유형의 QJSValue를 만듭니다. 기본 유형의 경우 QJSValue 생성자 오버로드 중 하나를 사용합니다. 다른 유형(예: QPoint 과 같은 등록된 가젯 유형)의 경우 QJSEngine::toScriptValue 을 사용할 수 있습니다.

isT()(예: isBool(), isUndefined())라는 이름의 메서드는 값이 특정 유형인지 테스트하는 데 사용할 수 있습니다. toT()(예: toBool(), toString())라는 메서드는 QJSValue를 다른 유형으로 변환하는 데 사용할 수 있습니다. 일반 qjsvalue_cast() 함수를 사용할 수도 있습니다.

객체 값에는 0개 이상의 프로퍼티가 있으며 그 자체가 QJSValue입니다. setProperty ()를 사용하여 객체의 속성을 설정하고 property()를 호출하여 속성 값을 검색합니다.

QJSEngine myEngine;
QJSValue myObject = myEngine.newObject();
QJSValue myOtherObject = myEngine.newObject();
myObject.setProperty("myChild", myOtherObject);
myObject.setProperty("name", "John Doe");

스크립트 개체의 속성을 반복하려면 QJSValueIterator 클래스를 사용하세요.

객체 값에는 prototype() 및 setPrototype()로 액세스할 수 있는 내부 prototype 속성이 있습니다.

함수 객체( isCallable())가 참을 반환하는 객체)는 call()를 호출하여 호출할 수 있습니다. 생성자 함수는 callAsConstructor()를 호출하여 새 객체를 생성하는 데 사용할 수 있습니다.

equals() 또는 strictlyEquals()를 사용하여 QJSValue를 다른 것과 비교합니다.

isObject()가 참인 QJSValue는 실제 객체에 대한 참조만 전달하며, QJSValue를 복사하면 객체 자체는 복사되지 않고 객체 참조만 복사된다는 점에 유의하세요. 객체를 복제하려면(즉, 객체의 속성을 다른 객체에 복사하려면) 스크립트 코드에서 for-in 문을 사용하거나 C++에서 QJSValueIterator 문을 사용하여 복제할 수 있습니다.

배열로 작업하기

QJSValue를 사용하여 배열을 만들려면 QJSEngine::newArray()를 사용합니다:

// Assumes that this class was declared in QML.
QJSValue jsArray = engine->newArray(3);

배열의 개별 요소를 설정하려면 setProperty(quint32 arrayIndex, const QJSValue &value) 오버로드를 사용합니다. 예를 들어 위의 배열을 정수로 채우려면 다음과 같이 하세요:

for (int i = 0; i < 3; ++i) {
    jsArray.setProperty(i, QRandomGenerator::global().generate());
}

배열의 길이를 확인하려면 "length" 프로퍼티에 액세스합니다. 배열 요소에 액세스하려면 property(quint32 arrayIndex) 오버로드를 사용합니다. 다음 코드는 위에서 만든 배열을 다시 목록으로 읽어들입니다:

QVector<int> integers;
const int length = jsArray.property("length").toInt();
for (int i = 0; i < length; ++i) {
    integers.append(jsArray.property(i).toInt());
}

JSON으로 변환하기

QJSValue를 JSON 유형으로 변환할 수 있습니다. 예를 들어 배열로 변환하려면 QJSEngine::fromScriptValue()를 사용합니다:

const QJsonValue jsonValue = engine.fromScriptValue<QJsonValue>(jsValue);
const QJsonArray jsonArray = jsonValue.toArray();

QJSEngineQJSValueIterator참조하세요 .

멤버 유형 문서

enum QJSValue::ErrorType

이 열거형은 JavaScript 언어별 오류 객체 유형에 사용합니다.

C++의 언어 기능을 에뮬레이트할 때 특수한 예외 유형을 사용해야 할 때 유용할 수 있습니다. 또한 일반적인 JavaScript 예외를 던지는 대신 특정 일반적인 조건을 보다 명확하게 전달하는 데 도움이 될 수 있습니다. 예를 들어 네트워킹 및 리소스 로케이터를 처리하는 코드에서는 URIError 유형을 사용하여 잘못된 로케이터와 관련된 오류를 전파하는 것이 유용할 수 있습니다.

상수설명
QJSValue::GenericError1특정 하위 유형이 아닌 일반 오류 객체입니다.
QJSValue::RangeError3값이 예상된 집합 또는 범위와 일치하지 않습니다.
QJSValue::ReferenceError4존재하지 않는 변수를 참조했습니다.
QJSValue::SyntaxError5언어 구문과 일치하지 않는 잘못된 토큰 또는 토큰 시퀀스가 발견되었습니다.
QJSValue::TypeError6피연산자 또는 인수가 예상 유형과 호환되지 않습니다.
QJSValue::URIError7URI 처리 함수가 잘못 사용되었거나 제공된 URI가 잘못되었습니다.

enum QJSValue::ObjectConversionBehavior

이 열거형은 QVariant 로 변환할 때 동등한 네이티브 Qt 유형이 없는 JavaScript 객체와 심볼을 어떻게 처리해야 하는지 지정하는 데 사용됩니다.

Constant설명
QJSValue::ConvertJSObjects0손실 가능성이 있는 최선의 변환이 시도됩니다. 심볼은 QString 로 변환됩니다.
QJSValue::RetainJSObjects1값은 QVariant 으로 래핑된 QJSValue 로 유지됩니다.

enum QJSValue::SpecialValue

이 열거형은 단일값 유형을 지정하는 데 사용됩니다.

Constant설명
QJSValue::UndefinedValue1정의되지 않은 값입니다.
QJSValue::NullValue0널 값입니다.

멤버 함수 문서

QJSValue::QJSValue(QJSValue::SpecialValue value = UndefinedValue)

특수 value 를 사용하여 새 QJSValue를 구축합니다.

QJSValue::QJSValue(bool value)

부울 value 을 사용하여 새 QJSValue를 구축합니다.

QJSValue::QJSValue(const QLatin1String &value)

문자열 value 을 사용하여 새 QJSValue를 생성합니다.

QJSValue::QJSValue(const QString &value)

문자열 value 을 사용하여 새 QJSValue를 생성합니다.

QJSValue::QJSValue(const char *value)

문자열 value 을 사용하여 새 QJSValue를 생성합니다.

QJSValue::QJSValue(double value)

숫자를 사용하여 새 QJSValue를 구축합니다 value.

QJSValue::QJSValue(int value)

숫자를 사용하여 새 QJSValue를 구축합니다 value.

QJSValue::QJSValue(uint value)

숫자를 사용하여 새 QJSValue를 구축합니다 value.

QJSValue::QJSValue(const QJSValue &other)

other 의 복사본인 새 QJSValue를 생성합니다.

other 가 객체인 경우(즉, isObject()가 참을 반환하는 경우), 기본 객체에 대한 참조만 새 스크립트 값에 복사됩니다(즉, 객체 자체는 복사되지 않음).

QJSValue::QJSValue(QJSValue &&other)

생성자를 이동합니다. other 에서 이 QJSValue 객체로 이동합니다.

[noexcept] QJSValue::~QJSValue()

이것을 파괴합니다 QJSValue.

QJSValue QJSValue::call(const QJSValueList &args = QJSValueList()) const

QJSValue 을 함수로 호출하고, args 을 함수에 인수로 전달하고, globalObject()를 "this"-객체로 사용합니다. 함수에서 반환된 값을 반환합니다.

QJSValue 을 호출할 수 없는 경우 call()은 아무 작업도 수행하지 않고 정의되지 않은 QJSValue 을 반환합니다.

call()을 호출하면 스크립트 엔진에서 예외가 발생할 수 있으며, 이 경우 call()은 던져진 값(일반적으로 Error 객체)을 반환합니다. 반환 값에서 isError()를 호출하여 예외가 발생했는지 확인할 수 있습니다.

isCallable(), callWithInstance() 및 callAsConstructor()도 참조하세요 .

QJSValue QJSValue::callAsConstructor(const QJSValueList &args = QJSValueList()) const

Object 을 생성하고 이 QJSValue 을 생성자로 호출하여 생성된 객체를 'this' 객체로 사용하고 args 을 인수로 전달합니다. 생성자 호출의 반환 값이 객체이면 해당 객체가 반환되고, 그렇지 않으면 기본 생성된 객체가 반환됩니다.

QJSValue 이 함수가 아닌 경우 callAsConstructor()는 아무 작업도 수행하지 않고 정의되지 않은 QJSValue 을 반환합니다.

이 함수를 호출하면 스크립트 엔진에서 예외가 발생할 수 있으며, 이 경우 던져진 값(일반적으로 Error 객체)이 반환됩니다. 반환 값에서 isError()를 호출하여 예외가 발생했는지 확인할 수 있습니다.

call() 및 QJSEngine::newObject()도 참조하세요 .

QJSValue QJSValue::callWithInstance(const QJSValue &instance, const QJSValueList &args = QJSValueList()) const

QJSValue 을 함수로 호출하고, 함수 호출에서 instance 을 'this' 객체로 사용하고, args 을 함수에 인수로 전달합니다. 함수에서 반환된 값을 반환합니다.

QJSValue 이 함수가 아닌 경우 call()은 아무 작업도 수행하지 않고 정의되지 않은 QJSValue 을 반환합니다.

instance 이 객체가 아닌 경우 전역 객체( QJSEngine::globalObject() 참조)가 'this' 객체로 사용됩니다.

call()를 호출하면 스크립트 엔진에서 예외가 발생할 수 있으며, 이 경우 call()는 던져진 값(일반적으로 Error 객체)을 반환합니다. 반환 값에서 isError()를 호출하여 예외가 발생했는지 확인할 수 있습니다.

call()도 참조하세요 .

bool QJSValue::deleteProperty(const QString &name)

주어진 name 의 이 객체 프로퍼티를 삭제하려고 시도합니다. 프로퍼티가 삭제되면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

이 함수의 동작은 자바스크립트 삭제 연산자와 일치합니다. 특히

  • 구성할 수 없는 속성은 삭제할 수 없습니다.
  • 이 함수는 이 객체에 지정된 name 속성이 없는 경우에도 참을 반환합니다(즉, 존재하지 않는 속성은 "삭제할 수 없음").
  • 이 객체에 지정된 name 의 자체 프로퍼티가 없지만 prototype() 체인의 객체에 있는 경우, 프로토타입 객체의 프로퍼티는 삭제되지 않으며 이 함수는 참을 반환합니다.

setProperty() 및 hasOwnProperty()도 참조하세요 .

bool QJSValue::equals(const QJSValue &other) const

QJSValueother 과 같으면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다. 이 비교는 ECMA-262 섹션 11.9.3, "추상적 동일성 비교 알고리즘"에 설명된 동작을 따릅니다.

이 함수는 QJSValue 의 유형이 other 값의 유형과 다른 경우, 즉 비교가 엄격하지 않은 경우에도 참을 반환할 수 있습니다. 예를 들어 숫자 9를 문자열 "9"와 비교하면 참을 반환하고, 정의되지 않은 값을 null 값과 비교하면 참을 반환하며, 기본값이 6인 Number 객체를 기본값이 "6"인 String 객체와 비교하면 참을 반환하고, 숫자 1을 부울 값 true 과 비교하면 참을 반환합니다. 이러한 암시적 값 변환 없이 비교를 수행하려면 strictlyEquals()를 사용합니다.

QJSValue 또는 other 값이 객체인 경우 이 함수를 호출하면 엔진이 객체를 원시 값으로 변환하기 위해 객체의 valueOf() 함수(및 toString())를 호출하므로 스크립트 엔진에 부작용이 발생할 수 있습니다(잡히지 않은 스크립트 예외가 발생할 수 있음).

strictlyEquals()도 참조하세요 .

QJSValue::ErrorType QJSValue::errorType() const

QJSValue 이 오류 객체인 경우 해당 오류 유형을 반환합니다. 그렇지 않으면 다음을 반환합니다. NoError."

isError() 및 QJSEngine - Script Exceptions도 참조하세요 .

bool QJSValue::hasOwnProperty(const QString &name) const

이 객체에 지정된 name 의 자체(프로토타입에서 상속되지 않은) 프로퍼티가 있으면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

property() 및 hasProperty()도 참조하세요 .

bool QJSValue::hasProperty(const QString &name) const

이 객체에 지정된 name 의 속성이 있으면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

property() 및 hasOwnProperty()도 참조하세요 .

bool QJSValue::isArray() const

QJSValue 이 Array 클래스의 객체이면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

QJSEngine::newArray()도 참조하세요 .

bool QJSValue::isBool() const

QJSValue 이 기본 유형 부울이면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

toBool()도 참조하세요 .

bool QJSValue::isCallable() const

QJSValue 이 함수인 경우 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

call()도 참조하세요 .

bool QJSValue::isDate() const

QJSValue 이 Date 클래스의 객체이면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

bool QJSValue::isError() const

QJSValue 이 Error 클래스의 객체이면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

errorType() 및 QJSEngine - Script Exceptions도 참조하세요 .

bool QJSValue::isNull() const

QJSValue 이 기본 유형이 Null이면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

bool QJSValue::isNumber() const

QJSValue 이 기본 유형 Number인 경우 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

toNumber()도 참조하세요 .

bool QJSValue::isObject() const

QJSValue 이 객체 유형인 경우 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

함수 값, 변형 값 및 QObject 값은 객체이므로 이 함수는 이러한 값에 대해 참을 반환합니다.

QJSEngine::newObject()도 참조하세요 .

bool QJSValue::isQMetaObject() const

QJSValueQMetaObject 인 경우 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

toQMetaObject() 및 QJSEngine::newQMetaObject()도 참조하세요 .

bool QJSValue::isQObject() const

QJSValueQObject 인 경우 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

참고: 이 함수는 QJSValue 이 감싸고 있는 QObject 이 삭제된 경우에도 참을 반환합니다.

toQObject() 및 QJSEngine::newQObject()도 참조하세요 .

bool QJSValue::isRegExp() const

QJSValue 이 RegExp 클래스의 객체이면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

bool QJSValue::isString() const

QJSValue 이 기본 유형 문자열이면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

toString()도 참조하세요 .

bool QJSValue::isUndefined() const

QJSValue 원시 유형이 Undefined이거나 관리되는 값이 지워진 경우(엔진을 삭제하여) true를 반환합니다. 그렇지 않으면 false를 반환합니다.

bool QJSValue::isUrl() const

QJSValue 이 URL JavaScript 클래스의 객체이면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

참고: QUrl 을 포함하는 QJSValue 의 경우 이 함수는 false를 반환합니다. 그러나 toVariant().value<QUrl>() 은 두 경우 모두 작동합니다.

[until 6.9] bool QJSValue::isVariant() const

이 함수는 버전 6.9에서 더 이상 사용되지 않을 예정입니다.

QJSValue 이 변형 값인 경우 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

경고: 이 함수는 예기치 않은 결과를 제공할 수 있습니다. 변형 값은 매우 제한된 경우에만 QJSEngine 에 의해 구성됩니다. Qt 5.14 이전에는 QJSEngine::toScriptValue 이 해당 ECMAScript 유형 대신 더 많은 유형에 대해 생성했습니다. toVariant 을 통해 isVariant 이 거짓을 반환하는 많은 값에 대해 유효한 QVariant 을 얻을 수 있습니다.

toVariant()도 참조하세요 .

QJSValue QJSValue::property(const QString &name) const

주어진 name 과 함께 이 QJSValue 의 속성 값을 반환합니다. 해당 프로퍼티가 존재하지 않으면 정의되지 않은 QJSValue 가 반환됩니다.

프로퍼티가 게터 함수를 사용하여 구현된 경우(즉, PropertyGetter 플래그가 설정된 경우), 게터 함수가 호출되므로(잡히지 않은 스크립트 예외가 발생할 수 있음) 스크립트 엔진에 부작용이 발생할 수 있으므로 property()를 호출할 수 있습니다. 예외가 발생하면 property()는 던져진 값(일반적으로 Error 객체)을 반환합니다.

배열 요소에 액세스하려면 setProperty(quint32 arrayIndex, const QJSValue &value) 오버로드를 대신 사용하세요.

setProperty(), hasProperty() 및 QJSValueIterator참조하세요 .

QJSValue QJSValue::property(quint32 arrayIndex) const

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

주어진 arrayIndex 에서 속성을 반환합니다.

배열의 요소에 액세스하는 방법은 두 가지가 있습니다. 첫 번째는 배열 인덱스를 속성 이름으로 사용하는 것입니다:

qDebug() << jsValueArray.property(QLatin1String("4")).toString();

두 번째는 인덱스를 취하는 오버로드를 사용하는 것입니다:

qDebug() << jsValueArray.property(4).toString();

이 두 가지 접근 방식은 후자를 제외하고는 동일한 결과를 얻습니다:

  • 사용하기 더 쉽습니다(정수를 직접 사용할 수 있음).
  • 더 빠릅니다(정수로 변환할 필요가 없음).

QJSValue 이 배열 객체가 아닌 경우 이 함수는 arrayIndex 의 문자열 표현으로 property() 를 호출한 것처럼 동작합니다.

QJSValue QJSValue::prototype() const

QJSValue 이 객체인 경우 이 객체의 내부 프로토타입(__proto__ 속성)을 반환하고, 그렇지 않으면 정의되지 않은 QJSValue 을 반환합니다.

setPrototype() 및 isObject()도 참조하세요 .

void QJSValue::setProperty(const QString &name, const QJSValue &value)

주어진 name 을 사용하여 이 QJSValue 의 속성 값을 주어진 value 으로 설정합니다.

QJSValue 이 객체가 아닌 경우 이 함수는 아무 작업도 수행하지 않습니다.

QJSValuename 이라는 이름의 프로퍼티가 아직 없는 경우 새 프로퍼티가 생성됩니다.

배열 요소를 수정하려면 setProperty(quint32 arrayIndex, const QJSValue &value) 오버로드를 대신 사용하세요.

property() 및 deleteProperty()도 참조하세요 .

void QJSValue::setProperty(quint32 arrayIndex, const QJSValue &value)

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

주어진 arrayIndex 의 속성을 주어진 value 으로 설정합니다.

배열의 요소는 두 가지 방법으로 수정할 수 있습니다. 첫 번째는 배열 인덱스를 속성 이름으로 사용하는 것입니다:

jsValueArray.setProperty(QLatin1String("4"), value);

두 번째는 인덱스를 취하는 오버로드를 사용하는 것입니다:

jsValueArray.setProperty(4, value);

이 두 가지 접근 방식은 후자를 제외하고는 동일한 결과를 얻습니다:

  • 사용하기 더 쉽습니다(정수를 직접 사용할 수 있음).
  • 더 빠릅니다(정수로 변환할 필요가 없음).

QJSValue 이 배열 객체가 아닌 경우 이 함수는 arrayIndex 의 문자열 표현으로 setProperty() 를 호출한 것처럼 동작합니다.

property(quint32 arrayIndex) 및 Working With Arrays도 참조하십시오 .

void QJSValue::setPrototype(const QJSValue &prototype)

QJSValue 이 객체인 경우 이 객체의 내부 프로토타입(__proto__ 속성)을 prototype 으로 설정하고, QJSValue 이 null이면 프로토타입을 null로 설정하며, 그렇지 않으면 아무 작업도 수행하지 않습니다.

내부 프로토타입은 일반적으로 생성자 역할을 하는 함수에만 설정되므로 "프로토타입"이라는 이름의 공용 프로퍼티와 혼동해서는 안 됩니다.

prototype() 및 isObject()도 참조하세요 .

bool QJSValue::strictlyEquals(const QJSValue &other) const

엄격한 비교(변환 없음)를 사용하여 QJSValueother 과 같으면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다. 이 비교는 ECMA-262 섹션 11.9.6, "엄격한 동일성 비교 알고리즘"에 설명된 동작을 따릅니다.

QJSValue 의 유형이 other 값의 유형과 다른 경우 이 함수는 false를 반환합니다. 유형이 같으면 결과는 다음 표에 표시된 것처럼 유형에 따라 달라집니다:

유형결과
정의되지 않음true
Nulltrue
부울두 값이 모두 참이면 참, 그렇지 않으면 거짓
숫자두 값 중 하나가 NaN(숫자가 아님)이면 거짓, 두 값이 같으면 참, 그렇지 않으면 거짓입니다.
String두 값이 정확히 동일한 문자 시퀀스이면 참, 그렇지 않으면 거짓입니다.
Object두 값이 모두 동일한 객체를 참조하면 참, 그렇지 않으면 거짓입니다.

equals()도 참조하세요 .

bool QJSValue::toBool() const

ECMA-262 섹션 9.2, "ToBoolean"에 설명된 변환 규칙을 사용하여 이 QJSValue 의 부울 값을 반환합니다.

QJSValue 이 객체인 경우 이 함수를 호출하면 엔진이 객체를 원시 값으로 변환하기 위해 객체의 valueOf() 함수(및 toString())를 호출하므로 스크립트 엔진에 부작용이 발생할 수 있습니다(잡히지 않은 스크립트 예외가 발생할 수 있음).

isBool()도 참조하세요 .

QDateTime QJSValue::toDateTime() const

현지 시간으로 이 값의 QDateTime 표현을 반환합니다. QJSValue 이 날짜가 아니거나 날짜 값이 NaN(숫자가 아님)이면 잘못된 QDateTime 이 반환됩니다.

isDate()도 참조하세요 .

qint32 QJSValue::toInt() const

ECMA-262 섹션 9.5, "ToInt32"에 설명된 변환 규칙을 사용하여 이 QJSValue 의 부호화된 32비트 정수 값을 반환합니다.

QJSValue 이 객체인 경우 이 함수를 호출하면 엔진이 객체를 원시 값으로 변환하기 위해 객체의 valueOf() 함수(및 toString())를 호출하므로 스크립트 엔진에 부작용이 발생할 수 있습니다(잡히지 않은 스크립트 예외가 발생할 수 있음).

toNumber() 및 toUInt()도 참조하세요 .

double QJSValue::toNumber() const

ECMA-262 섹션 9.3, "ToNumber"에 정의된 대로 QJSValue 의 숫자 값을 반환합니다.

QJSValue 이 객체인 경우 이 함수를 호출하면 엔진이 객체를 원시 값으로 변환하기 위해 객체의 valueOf() 함수(및 toString())를 호출하므로 스크립트 엔진에 부작용이 발생할 수 있습니다(잡히지 않은 스크립트 예외가 발생할 수 있음).

isNumber(), toInt() 및 toUInt()도 참조하세요 .

QJSPrimitiveValue QJSValue::toPrimitive() const

값을 QJSPrimitiveValue 으로 변환합니다. 값에 QJSPrimitiveValue 에서 지원하는 유형이 포함되어 있으면 값이 복사됩니다. 그렇지 않으면 값이 문자열로 변환되고 문자열이 QJSPrimitiveValue 에 저장됩니다.

참고: 관리되는 값을 문자열로 변환하면 예외가 발생할 수 있습니다. 특히 기호를 문자열로 강제로 변환할 수 없거나 사용자 정의 toString() 메서드가 throw될 수 있습니다. 이 경우 결과는 정의되지 않은 값이며 엔진은 변환 후 오류를 전달합니다.

const QMetaObject *QJSValue::toQMetaObject() const

* QJSValueQMetaObject 인 경우 QJSValue 이 나타내는 QMetaObject 포인터 *를 반환하고, 그렇지 않으면 nullptr 을 반환합니다. * *

isQMetaObject()도 참조하세요 .

QObject *QJSValue::toQObject() const

QJSValueQObject 인 경우 QJSValue 이 나타내는 QObject 포인터를 반환하고, 그렇지 않으면 nullptr 을 반환합니다.

QJSValue 이 감싸는 QObject 이 삭제된 경우, 이 함수는 nullptr 을 반환합니다(즉, isQObject()가 참을 반환하는 경우에도 toQObject()가 nullptr 을 반환할 수 있습니다).

isQObject()도 참조하십시오 .

QString QJSValue::toString() const

ECMA-262 섹션 9.8, "ToString"에 정의된 대로 QJSValue 의 문자열 값을 반환합니다.

QJSValue 이 객체인 경우 이 함수를 호출하면 엔진이 객체를 원시 값으로 변환하기 위해 객체의 toString() 함수(및 아마도 valueOf())를 호출하므로 스크립트 엔진에 부작용이 있습니다(잡히지 않은 스크립트 예외가 발생할 수 있음).

isString()도 참조하세요 .

quint32 QJSValue::toUInt() const

ECMA-262 섹션 9.6, "ToUint32"에 설명된 변환 규칙을 사용하여 이 QJSValue 의 부호 없는 32비트 정수 값을 반환합니다.

QJSValue 이 객체인 경우 이 함수를 호출하면 엔진이 객체를 원시 값으로 변환하기 위해 객체의 valueOf() 함수(및 toString())를 호출하므로 스크립트 엔진에 부작용이 발생할 수 있습니다(잡히지 않은 스크립트 예외가 발생할 수 있음).

toNumber() 및 toInt()도 참조하세요 .

QVariant QJSValue::toVariant(QJSValue::ObjectConversionBehavior behavior) const

QJSValue 값이 QVariant 로 변환될 수 있으면 QVariant 값을 반환하고, 그렇지 않으면 유효하지 않은 QVariant 을 반환합니다. 일부 JavaScript 유형과 객체에는 Qt의 네이티브 표현식이 있습니다. 이러한 표현식은 네이티브 표현식으로 변환됩니다. 예를 들면 다음과 같습니다:

입력 유형결과
Undefined잘못된 QVariant 입니다.
Null널 포인터(QMetaType::Nullptr)를 포함하는 QVariant.
Boolean부울 값을 포함하는 QVariant.
숫자숫자 값을 포함하는 QVariant.
문자열문자열 값을 포함하는 QVariant.
QVariant 객체결과는 개체의 QVariant 값입니다(변환되지 않음).
QObject 객체QObject 에 대한 포인터를 포함하는 QVariant 입니다.
날짜 객체날짜 값(toDateTime())을 포함하는 QVariant 입니다.
RegularExpression Object정규식 값을 포함하는 QVariant.

다른 유형의 경우 behavior 매개 변수가 관련됩니다. ConvertJSObjects 이 주어지면 최선을 다하지만 손실이 발생할 수 있는 변환이 시도됩니다. 일반 JavaScript 객체는 QVariantMap 로 변환됩니다. JavaScript 배열은 QVariantList 으로 변환됩니다. 각 속성 또는 요소는 QVariant 으로 재귀적으로 변환되며 순환 참조는 따르지 않습니다. JavaScript 함수 객체는 삭제됩니다. RetainJSObjects 이 주어진 경우 QJSValueQVariant::fromValue()을 통해 QVariant 로 래핑됩니다. 결과 변환은 무손실이지만 객체의 내부 구조는 즉시 액세스할 수 없습니다.

isVariant()도 참조하세요 .

QVariant QJSValue::toVariant() const

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

toVariant(ConvertJSObjects)를 반환합니다.

isVariant()도 참조하세요 .

QJSValue &QJSValue::operator=(QJSValue &&other)

이동-이 QJSValue 객체에 other 을 할당합니다.

QJSValue &QJSValue::operator=(const QJSValue &other)

QJSValueother 값을 할당합니다.

other 가 객체(isObject()가 참을 반환함)인 경우 기본 객체에 대한 참조만 할당되며 객체 자체는 복사되지 않음에 유의하세요.

관련 비회원

QJSValueList

QList<QJSValue>의 타입 정의입니다.

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