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.