En esta página

QQmlExpression Class

La clase QQmlExpression evalúa JavaScript en un contexto QML. Más...

Cabecera: #include <QQmlExpression>
CMake: find_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake: QT += qml
Hereda: QObject

Funciones públicas

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

Señales

void valueChanged()

Descripción detallada

Por ejemplo, dado un archivo main.qml como este:

import QtQuick 2.0

Item {
    width: 200; height: 200
}

El siguiente código evalúa una expresión JavaScript en el contexto del QML anterior:

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

Documentación de funciones miembro

QQmlExpression::QQmlExpression()

Crea una QQmlExpression inválida.

Como la expresión no tendrá un QQmlContext asociado, será un objeto de expresión nulo y su valor será siempre un QVariant no válido.

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

Cree un objeto QQmlExpression que sea hijo de parent.

El JavaScript de expression se ejecutará en ctxt QQmlContext . Si se especifica, las propiedades del objeto scope también estarán en el ámbito durante la ejecución de la expresión.

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

Crea un objeto QQmlExpression que es hijo de parent.

script proporciona la expresión que se va a evaluar, el contexto en el que se va a evaluar y el objeto scope con el que se va a evaluar. Si se proporciona, ctxt y scope sobrescribirán el contexto y el objeto de ámbito proporcionados por script.

Véase también QQmlScriptString.

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

Destruye la instancia QQmlExpression.

void QQmlExpression::clearError()

Borra cualquier error de expresión. Las siguientes llamadas a hasError() devolverán false.

Véase también hasError() y error().

int QQmlExpression::columnNumber() const

Devuelve el número de columna del archivo fuente para esta expresión. La ubicación de la fuente debe haberse establecido previamente llamando a setSourceLocation().

QQmlContext *QQmlExpression::context() const

Devuelve el QQmlContext al que está asociada esta expresión, o nullptr si no hay asociación o el QQmlContext ha sido destruido.

QQmlEngine *QQmlExpression::engine() const

Devuelve el QQmlEngine al que está asociada esta expresión, o nullptr si no hay asociación o el QQmlEngine ha sido destruido.

QQmlError QQmlExpression::error() const

Devuelve cualquier error de la última llamada a evaluate(). Si no hubo error, devuelve una instancia inválida de QQmlError.

Véase también hasError() y clearError().

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

Evaula la expresión, devolviendo el resultado de la evaluación, o un QVariant inválido si la expresión no es válida o tiene un error.

valueIsUndefined se establece en true si la expresión dio como resultado un valor indefinido.

Véase también hasError() y error().

QString QQmlExpression::expression() const

Devuelve la cadena de expresión.

Véase también setExpression().

bool QQmlExpression::hasError() const

Devuelve true si la última llamada a evaluate() produjo un error, en caso contrario false.

Véase también error() y clearError().

int QQmlExpression::lineNumber() const

Devuelve el número de línea del archivo fuente para esta expresión. La ubicación de la fuente debe haberse establecido previamente llamando a setSourceLocation().

bool QQmlExpression::notifyOnValueChanged() const

Devuelve verdadero si se emite la señal valueChanged() cuando cambia el valor evaluado de la expresión.

Véase también setNotifyOnValueChanged().

QObject *QQmlExpression::scopeObject() const

Devuelve el objeto scope de la expresión, si se proporciona, en caso contrario 0.

Además de los datos proporcionados por la expresión QQmlContext, las propiedades del objeto de ámbito también están en el ámbito durante la evaluación de la expresión.

void QQmlExpression::setExpression(const QString &expression)

Establezca la expresión en expression.

Véase también expression().

void QQmlExpression::setNotifyOnValueChanged(bool notifyOnChange)

Establece si se emite la señal valueChanged() cuando cambia el valor evaluado de la expresión.

Si notifyOnChange es verdadero, QQmlExpression controlará las propiedades implicadas en la evaluación de la expresión y emitirá QQmlExpression::valueChanged() si han cambiado. Esto permite a una aplicación asegurarse de que cualquier valor asociado con el resultado de la expresión permanece actualizado.

Si notifyOnChange es falso (por defecto), QQmlExpression no controlará las propiedades implicadas en la evaluación de la expresión, y nunca se emitirá QQmlExpression::valueChanged(). Esto es más eficiente si una aplicación desea una evaluación "única" de la expresión.

Véase también notifyOnValueChanged().

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

Establezca la ubicación de esta expresión en line y column de url. Esta información es utilizada por el motor de script.

QString QQmlExpression::sourceFile() const

Devuelve la URL del archivo fuente de esta expresión. La ubicación de la fuente debe haberse establecido previamente llamando a setSourceLocation().

[signal] void QQmlExpression::valueChanged()

Se emite cada vez que el valor de la expresión cambia con respecto a la última vez que se evaluó. La expresión debe haber sido evaluada al menos una vez (llamando a QQmlExpression::evaluate()) antes de que se emita esta señal.

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