QQmlExpression Class
Die Klasse „QQmlExpression“ wertet JavaScript in einem QML-Kontext aus. Mehr dazu...
| Überschrift: | #include <QQmlExpression> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Qml) target_link_libraries(mytarget PRIVATE Qt6::Qml) |
| qmake: | QT += qml |
| Erbt von: | QObject |
Öffentliche Funktionen
| 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 |
Signale
| void | valueChanged() |
Ausführliche Beschreibung
Beispiel: Angenommen, es gibt eine Datei „ main.qml “ wie folgt:
import QtQuick 2.0
Item {
width: 200; height: 200
}Der folgende Code wertet einen JavaScript-Ausdruck im Kontext des obigen QML aus:
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 = 400Dokumentation zu Mitgliedsfunktionen
QQmlExpression::QQmlExpression()
Erstellen Sie einen ungültigen QQmlExpression.
Da dem Ausdruck kein „ QQmlContext “ zugeordnet ist, handelt es sich um ein Null-Ausdrucksobjekt, dessen Wert stets ein ungültiges „ QVariant “ ist.
QQmlExpression::QQmlExpression(QQmlContext *ctxt, QObject *scope, const QString &expression, QObject *parent = nullptr)
Erstellen Sie ein QQmlExpression-Objekt, das ein untergeordnetes Element von „ parent “ ist.
Das JavaScript von „ expression “ wird im „ ctxt “ QQmlContext ausgeführt. Falls angegeben, stehen die Eigenschaften des Objekts „ scope “ während der Ausführung des Ausdrucks ebenfalls im Gültigkeitsbereich.
[explicit] QQmlExpression::QQmlExpression(const QQmlScriptString &script, QQmlContext *ctxt = nullptr, QObject *scope = nullptr, QObject *parent = nullptr)
Erstellen Sie ein QQmlExpression-Objekt, das ein untergeordnetes Element von „ parent “ ist.
script stellt den auszuwertenden Ausdruck, den Kontext für die Auswertung sowie das Scope-Objekt für die Auswertung bereit. Falls „ ctxt “ und „ scope “ angegeben werden, überschreiben diese den von script bereitgestellten Kontext und das Scope-Objekt.
Siehe auch QQmlScriptString.
[override virtual noexcept] QQmlExpression::~QQmlExpression()
Die „ QQmlExpression “-Instanz löschen.
void QQmlExpression::clearError()
Beheben Sie alle Ausdrucksfehler. Aufrufe von hasError() im Anschluss daran geben „false“ zurück.
Siehe auch „ hasError()“ und „ error()“.
int QQmlExpression::columnNumber() const
Gibt die Spaltennummer der Quelldatei für diesen Ausdruck zurück. Der Speicherort der Quelldatei muss zuvor durch den Aufruf von ` setSourceLocation()` festgelegt worden sein.
QQmlContext *QQmlExpression::context() const
Gibt den „ QQmlContext “ zurück, mit dem dieser Ausdruck verknüpft ist, oder „ nullptr “, wenn keine Verknüpfung besteht oder der „ QQmlContext “ zerstört wurde.
QQmlEngine *QQmlExpression::engine() const
Gibt den „ QQmlEngine “ zurück, mit dem dieser Ausdruck verknüpft ist, oder „ nullptr “, falls keine Verknüpfung besteht oder der „ QQmlEngine “ zerstört wurde.
QQmlError QQmlExpression::error() const
Gibt einen eventuellen Fehler aus dem letzten Aufruf von evaluate() zurück. Wenn kein Fehler aufgetreten ist, wird eine ungültige QQmlError -Instanz zurückgegeben.
Siehe auch „ hasError()“ und „ clearError()“.
QVariant QQmlExpression::evaluate(bool *valueIsUndefined = nullptr)
Wertet den Ausdruck aus und gibt das Ergebnis der Auswertung zurück – oder einen ungültigen „ QVariant “, falls der Ausdruck ungültig ist oder einen Fehler enthält.
valueIsUndefined wird auf „true“ gesetzt, wenn der Ausdruck einen undefinierten Wert ergab.
Siehe auch ` hasError()` und ` error()`.
QString QQmlExpression::expression() const
Gibt die Ausdruckszeichenfolge zurück.
Siehe auch „ setExpression()“.
bool QQmlExpression::hasError() const
Gibt „true“ zurück, wenn der letzte Aufruf von ` evaluate()` zu einem Fehler geführt hat, andernfalls „false“.
Siehe auch ` error()` und ` clearError()`.
int QQmlExpression::lineNumber() const
Gibt die Zeilennummer in der Quelldatei für diesen Ausdruck zurück. Die Quellposition muss zuvor durch den Aufruf von ` setSourceLocation()` festgelegt worden sein.
bool QQmlExpression::notifyOnValueChanged() const
Gibt „true“ zurück, wenn das Signal „ valueChanged()“ ausgelöst wird, sobald sich der ausgewertete Wert des Ausdrucks ändert.
Siehe auch ` setNotifyOnValueChanged()`.
QObject *QQmlExpression::scopeObject() const
Gibt das Geltungsbereichsobjekt des Ausdrucks zurück, sofern vorhanden, andernfalls 0.
Zusätzlich zu den Daten, die vom „ QQmlContext “ des Ausdrucks bereitgestellt werden, sind während der Auswertung des Ausdrucks auch die Eigenschaften des Geltungsbereichsobjekts im Geltungsbereich enthalten.
void QQmlExpression::setExpression(const QString &expression)
Setzen Sie den Ausdruck auf „ expression “.
Siehe auch expression().
void QQmlExpression::setNotifyOnValueChanged(bool notifyOnChange)
Legt fest, ob das Signal „ valueChanged()“ ausgegeben wird, wenn sich der ausgewertete Wert des Ausdrucks ändert.
Ist „ notifyOnChange “ auf „true“ gesetzt, überwacht das „ QQmlExpression “ die an der Auswertung des Ausdrucks beteiligten Eigenschaften und löst „ QQmlExpression::valueChanged()“ aus, wenn sich diese geändert haben. Auf diese Weise kann eine Anwendung sicherstellen, dass alle mit dem Ergebnis des Ausdrucks verbundenen Werte stets auf dem neuesten Stand bleiben.
Ist ` notifyOnChange ` falsch (Standard), überwacht der ` QQmlExpression ` keine Eigenschaften, die an der Auswertung des Ausdrucks beteiligt sind, und ` QQmlExpression::valueChanged()` wird niemals ausgelöst. Dies ist effizienter, wenn eine Anwendung eine einmalige Auswertung des Ausdrucks wünscht.
Siehe auch notifyOnValueChanged().
void QQmlExpression::setSourceLocation(const QString &url, int line, int column = 0)
Legen Sie den Speicherort dieses Ausdrucks auf line und column von url fest. Diese Informationen werden von der Skript-Engine verwendet.
QString QQmlExpression::sourceFile() const
Gibt die URL der Quelldatei für diesen Ausdruck zurück. Der Speicherort der Quelldatei muss zuvor durch den Aufruf von ` setSourceLocation()` festgelegt worden sein.
[signal] void QQmlExpression::valueChanged()
Wird jedes Mal ausgelöst, wenn sich der Wert des Ausdrucks seit seiner letzten Auswertung ändert. Der Ausdruck muss mindestens einmal ausgewertet worden sein (durch Aufruf von ` QQmlExpression::evaluate()`), bevor dieses Signal ausgelöst wird.
© 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.