QQmlExpression Class
La classe QQmlExpression évalue du code JavaScript dans un contexte QML. En savoir plus...
| En-tête : | #include <QQmlExpression> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Qml) target_link_libraries(mytarget PRIVATE Qt6::Qml) |
| qmake : | QT += qml |
| Hérite de : | QObject |
Fonctions publiques
| 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 |
Signaux
| void | valueChanged() |
Description détaillée
Par exemple, considérons un fichier main.qml comme celui-ci :
import QtQuick 2.0
Item {
width: 200; height: 200
}Le code suivant évalue une expression JavaScript dans le contexte du QML ci-dessus :
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 = 400Documentation des fonctions membres
QQmlExpression::QQmlExpression()
Créer une expression QQmlExpression non valide.
Comme l'expression n'aura pas d'QQmlContext associée, il s'agira d'un objet d'expression nul et sa valeur sera toujours une QVariant invalide.
QQmlExpression::QQmlExpression(QQmlContext *ctxt, QObject *scope, const QString &expression, QObject *parent = nullptr)
Créez un objet QQmlExpression qui soit un enfant de parent.
Le code JavaScript de l'expression sera exécuté dans l'ctxt QQmlContext . Si elles sont spécifiées, les propriétés de l'objet scope seront également disponibles lors de l'exécution de l'expression.
[explicit] QQmlExpression::QQmlExpression(const QQmlScriptString &script, QQmlContext *ctxt = nullptr, QObject *scope = nullptr, QObject *parent = nullptr)
Créez un objet `QQmlExpression` qui soit un enfant de ` parent`.
L'objet ` script ` fournit l'expression à évaluer, le contexte dans lequel l'évaluer et l'objet de portée à utiliser pour l'évaluation. S'ils sont fournis, les paramètres ` ctxt ` et ` scope ` remplaceront le contexte et l'objet de portée fournis par ` script`.
Voir également QQmlScriptString.
[override virtual noexcept] QQmlExpression::~QQmlExpression()
Supprimez l'instance « QQmlExpression ».
void QQmlExpression::clearError()
Supprime toutes les erreurs d'expression. Les appels à hasError() effectués par la suite renverront la valeur « false ».
Voir également ` hasError()` et ` error()`.
int QQmlExpression::columnNumber() const
Renvoie le numéro de colonne du fichier source correspondant à cette expression. L'emplacement source doit avoir été préalablement défini à l'aide de la fonction ` setSourceLocation()`.
QQmlContext *QQmlExpression::context() const
Renvoie l'QQmlContext e à laquelle cette expression est associée, ou « nullptr » s'il n'y a pas d'association ou si l'QQmlContext e a été détruite.
QQmlEngine *QQmlExpression::engine() const
Renvoie l'QQmlEngine e à laquelle cette expression est associée, ou « nullptr » s'il n'y a pas d'association ou si l'QQmlEngine e a été détruite.
QQmlError QQmlExpression::error() const
Renvoie toute erreur survenue lors du dernier appel à la fonction evaluate(). S’il n’y a pas eu d’erreur, cette fonction renvoie une instance QQmlError non valide.
Voir également hasError() et clearError().
QVariant QQmlExpression::evaluate(bool *valueIsUndefined = nullptr)
Évalue l'QVariant, en renvoyant le résultat de l'évaluation, ou une non valide si celle-ci est incorrecte ou contient une erreur.
valueIsUndefined est défini sur true si l'expression a donné lieu à une valeur indéfinie.
Voir également ` hasError()` et ` error()`.
QString QQmlExpression::expression() const
Renvoie la chaîne de caractères de l'expression.
Voir aussi setExpression().
bool QQmlExpression::hasError() const
Renvoie « true » si le dernier appel à la fonction ` evaluate()` a généré une erreur, sinon « false ».
Voir également error() et clearError().
int QQmlExpression::lineNumber() const
Renvoie le numéro de ligne du fichier source correspondant à cette expression. L'emplacement source doit avoir été préalablement défini à l'aide de la fonction ` setSourceLocation()`.
bool QQmlExpression::notifyOnValueChanged() const
Renvoie « true » si le signal ` valueChanged()` est émis lorsque la valeur évaluée de l'expression change.
Voir aussi ` setNotifyOnValueChanged()`.
QObject *QQmlExpression::scopeObject() const
Renvoie l'objet de portée de l'expression, s'il est fourni ; sinon, renvoie 0.
Outre les données fournies par l'QQmlContext de l'expression, les propriétés de l'objet de portée sont également disponibles lors de l'évaluation de l'expression.
void QQmlExpression::setExpression(const QString &expression)
Définissez l'expression comme suit : expression.
Voir également expression().
void QQmlExpression::setNotifyOnValueChanged(bool notifyOnChange)
Détermine si le signal ` valueChanged()` est émis lorsque la valeur évaluée de l'expression change.
Si notifyOnChange est défini sur true, l’ QQmlExpression surveillera les propriétés impliquées dans l’évaluation de l’expression et émettra QQmlExpression::valueChanged() si celles-ci ont changé. Cela permet à une application de s’assurer que toute valeur associée au résultat de l’expression reste à jour.
Si notifyOnChange est faux (valeur par défaut), l’ QQmlExpression ne surveillera pas les propriétés impliquées dans l’évaluation de l’expression, et QQmlExpression::valueChanged() ne sera jamais émis. Cette option est plus efficace si une application souhaite une évaluation « ponctuelle » de l’expression.
Voir également notifyOnValueChanged().
void QQmlExpression::setSourceLocation(const QString &url, int line, int column = 0)
Définissez l'emplacement de cette expression sur line et column du site url. Ces informations sont utilisées par le moteur de script.
QString QQmlExpression::sourceFile() const
Renvoie l'URL du fichier source correspondant à cette expression. L'emplacement de la source doit avoir été préalablement défini à l'aide de la fonction setSourceLocation().
[signal] void QQmlExpression::valueChanged()
Émis chaque fois que la valeur de l'expression change par rapport à la dernière évaluation. L'expression doit avoir été évaluée au moins une fois (en appelant ` QQmlExpression::evaluate()`) avant que ce signal ne soit émis.
© 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.