QQmlExpression Class
QQmlExpression 클래스는 QML 컨텍스트에서 JavaScript를 평가합니다. 더 보기...
Header: | #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의 컨텍스트에서 자바스크립트 표현식을 평가합니다:
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 이 없으므로 이 표현식은 널 표현식 객체가 되고 그 값은 항상 유효하지 않은 QVariant 이 됩니다.
QQmlExpression::QQmlExpression(QQmlContext *ctxt, QObject *scope, const QString &expression, QObject *parent = nullptr)
parent 의 자식인 QQmlExpression 객체를 만듭니다.
expression 자바스크립트는 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가 반환됩니다.
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)
표현식을 취소하여 평가 결과를 반환하거나, 표현식이 유효하지 않거나 오류가 있는 경우 유효하지 않은 QVariant 을 반환합니다.
valueIsUndefined 표현식이 정의되지 않은 값을 반환하면 true로 설정됩니다.
QString QQmlExpression::expression() const
표현식 문자열을 반환합니다.
setExpression()도 참조하세요 .
bool QQmlExpression::hasError() const
evaluate()를 마지막으로 호출한 결과 오류가 발생하면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.
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 이 참이면 QQmlExpression 은 표현식의 평가에 관련된 속성을 모니터링하고 변경된 경우 QQmlExpression::valueChanged() 을 전송합니다. 이를 통해 애플리케이션은 표현식의 결과와 관련된 모든 값이 최신 상태로 유지되도록 할 수 있습니다.
notifyOnChange 이 false(기본값)인 경우 QQmlExpression 은 표현식의 평가에 관련된 속성을 모니터링하지 않으며 QQmlExpression::valueChanged()는 절대 반환되지 않습니다. 애플리케이션에서 표현식에 대한 "일회성" 평가를 원하는 경우 이 방법이 더 효율적입니다.
notifyOnValueChanged()도 참조하세요 .
void QQmlExpression::setSourceLocation(const QString &url, int line, int column = 0)
이 표현식의 위치를 line 및 column 의 url 로 설정합니다. 이 정보는 스크립트 엔진에서 사용됩니다.
QString QQmlExpression::sourceFile() const
이 표현식의 소스 파일 URL을 반환합니다. 소스 위치는 이전에 setSourceLocation()를 호출하여 설정했어야 합니다.
[signal]
void QQmlExpression::valueChanged()
표현식 값이 마지막으로 평가된 때와 변경될 때마다 발생합니다. 이 신호가 발생하려면 QQmlExpression::evaluate() 호출을 통해 표현식을 한 번 이상 평가한 적이 있어야 합니다.
© 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.