Auf dieser Seite

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 = 400

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