이 페이지에서

QQmlExpression Class

QQmlExpression 클래스는 QML 환경에서 JavaScript를 평가합니다. 더 보기...

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

공개 함수

QQmlExpression()
QQmlExpression(QQmlContext *ctxt, QObject *scope, const QString &expression, QObject *parent = nullptr)
QQmlExpression(const QQmlScriptString &script, QQmlContext *ctxt = nullptr, QObject *scope = nullptr, QObject *parent = nullptr)
virtual ~QQmlExpression() override
void clearError()
int columnNumber() const
QQmlContext *context() const
QQmlEngine *engine() const
QQmlError error() const
QVariant evaluate(bool *valueIsUndefined = nullptr)
QString expression() const
bool hasError() const
int lineNumber() const
bool notifyOnValueChanged() const
QObject *scopeObject() const
void setExpression(const QString &expression)
void setNotifyOnValueChanged(bool notifyOnChange)
void setSourceLocation(const QString &url, int line, int column = 0)
QString sourceFile() const

신호

void valueChanged()

상세 설명

예를 들어, 다음과 같은 main.qml 파일이 있다고 가정해 보겠습니다:

import QtQuick 2.0

Item {
    width: 200; height: 200
}

다음 코드는 위의 QML 컨텍스트에서 JavaScript 표현식을 평가합니다:

QQmlEngine *engine = new QQmlEngine;
QQmlComponent component(engine, QUrl::fromLocalFile("main.qml"));

QObject *myObject = component.create();
QQmlExpression *expr = new QQmlExpression(engine->rootContext(), myObject, "width * 2");
int result = expr->evaluate().toInt();  // result = 400

멤버 함수 문서

QQmlExpression::QQmlExpression()

유효하지 않은 QQmlExpression을 생성합니다.

이 표현식에는 연관된 QQmlContext 이 없으므로, 이는 null 표현식 객체가 되며 그 값은 항상 유효하지 않은 QVariant 이 됩니다.

QQmlExpression::QQmlExpression(QQmlContext *ctxt, QObject *scope, const QString &expression, QObject *parent = nullptr)

parent 의 자식인 QQmlExpression 객체를 생성합니다.

expression 의 JavaScript 코드는 ctxt QQmlContext 에서 실행됩니다. 지정된 경우, scope 객체의 속성도 식이 실행되는 동안 유효 범위에 포함됩니다.

[explicit] QQmlExpression::QQmlExpression(const QQmlScriptString &script, QQmlContext *ctxt = nullptr, QObject *scope = nullptr, QObject *parent = nullptr)

parent 의 자식인 QQmlExpression 객체를 생성합니다.

script 는 평가할 표현식, 평가할 컨텍스트, 그리고 평가에 사용할 범위 객체를 제공합니다. ctxt 및 scope 가 지정된 경우, 이들은 script 에서 제공하는 컨텍스트와 범위 객체를 재정의합니다.

QQmlScriptString도 참조하십시오 .

[override virtual noexcept] QQmlExpression::~QQmlExpression()

QQmlExpression 인스턴스를 삭제하십시오.

void QQmlExpression::clearError()

모든 표현식 오류를 제거합니다. 이후 hasError()을 호출하면 false가 반환됩니다.

hasError() 및 error()도 참조하십시오 .

int QQmlExpression::columnNumber() const

이 표현식에 해당하는 소스 파일의 열 번호를 반환합니다. 소스 위치는 미리 ` setSourceLocation()`를 호출하여 설정되어 있어야 합니다.

QQmlContext *QQmlExpression::context() const

이 표현식과 연결된 ` QQmlContext `를 반환하거나, 연결된 대상이 없거나 ` QQmlContext `가 소멸된 경우에는 ` nullptr `를 반환합니다.

QQmlEngine *QQmlExpression::engine() const

이 표현식과 연결된 ` QQmlEngine `를 반환하거나, 연결된 대상이 없거나 ` QQmlEngine `가 소멸된 경우에는 ` nullptr `를 반환합니다.

QQmlError QQmlExpression::error() const

evaluate()의 마지막 호출에서 발생한 오류를 반환합니다. 오류가 없는 경우, 이 메서드는 유효하지 않은 QQmlError 인스턴스를 반환합니다.

hasError() 및 clearError()도 참조하십시오 .

QVariant QQmlExpression::evaluate(bool *valueIsUndefined = nullptr)

식(expression)을 평가하여 그 결과를 반환하며, 식이 유효하지 않거나 오류가 있는 경우에는 무효한 식( QVariant )을 반환합니다.

valueIsUndefined 표현식의 결과가 정의되지 않은 값인 경우 이 값은 true로 설정됩니다.

hasError() 및 error()도 참조하십시오 .

QString QQmlExpression::expression() const

표현식 문자열을 반환합니다.

setExpression()도 참조하십시오 .

bool QQmlExpression::hasError() const

evaluate() 함수의 마지막 호출에서 오류가 발생했다면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

error() 및 clearError()도 참조하십시오 .

int QQmlExpression::lineNumber() const

이 표현식의 소스 파일 줄 번호를 반환합니다. 소스 위치는 미리 ` setSourceLocation()`를 호출하여 설정되어 있어야 합니다.

bool QQmlExpression::notifyOnValueChanged() const

표현식의 평가된 값이 변경될 때 valueChanged() 신호가 발생하면 true를 반환합니다.

setNotifyOnValueChanged()도 참조하십시오 .

QObject *QQmlExpression::scopeObject() const

지정된 경우 표현식의 범위 객체를 반환하고, 그렇지 않으면 0을 반환합니다.

표현식의 ` QQmlContext`에서 제공하는 데이터 외에도, 범위 객체의 속성들은 표현식 평가 중에 범위 내에 포함됩니다.

void QQmlExpression::setExpression(const QString &expression)

expression 로 식을 설정하십시오.

expression()도 참조하십시오 .

void QQmlExpression::setNotifyOnValueChanged(bool notifyOnChange)

표현식의 평가된 값이 변경될 때 ` valueChanged()` 신호가 발신되도록 할지 여부를 설정합니다.

notifyOnChange 가 true인 경우, QQmlExpression 는 표현식 평가에 관련된 속성을 모니터링하고, 해당 속성이 변경되면 QQmlExpression::valueChanged()을 발생시킵니다. 이를 통해 애플리케이션은 표현식 결과와 관련된 모든 값이 최신 상태로 유지되도록 할 수 있습니다.

notifyOnChange 가 false(기본값)인 경우, QQmlExpression 는 표현식 평가에 관련된 속성을 모니터링하지 않으며, QQmlExpression::valueChanged()가 절대 발생하지 않습니다. 이는 애플리케이션에서 표현식을 “한 번만” 평가하고자 할 때 더 효율적입니다.

notifyOnValueChanged()도 참조하십시오 .

void QQmlExpression::setSourceLocation(const QString &url, int line, int column = 0)

이 표현식의 위치를 line 및 url 의 column 로 설정하십시오. 이 정보는 스크립트 엔진에서 사용됩니다.

QString QQmlExpression::sourceFile() const

이 표현식의 소스 파일 URL을 반환합니다. 소스 위치는 이전에 ` setSourceLocation()`를 호출하여 설정되어 있어야 합니다.

[signal] void QQmlExpression::valueChanged()

표현식의 값이 마지막으로 평가된 시점 이후로 변경될 때마다 발생합니다. 이 신호가 발생하려면 표현식이 ( QQmlExpression::evaluate())를 호출하여 적어도 한 번은 평가된 상태여야 합니다.

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