QQmlExpression Class

Die Klasse QQmlExpression wertet JavaScript in einem QML-Kontext aus. Mehr...

Kopfzeile: #include <QQmlExpression>
CMake: find_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake: QT += qml
Vererbt: 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()

Detaillierte Beschreibung

Nehmen wir zum Beispiel eine Datei main.qml wie diese:

import QtQuick 2.0

Item {
    width: 200; height: 200
}

Der folgende Code wertet einen JavaScript-Ausdruck im Kontext der 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 der Mitgliedsfunktionen

QQmlExpression::QQmlExpression()

Erzeugt einen ungültigen QQml-Ausdruck.

Da dem Ausdruck kein QQmlContext zugeordnet ist, handelt es sich um ein Nullausdruck-Objekt, dessen Wert immer ein ungültiger QVariant sein wird.

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

Erstellen Sie ein QQmlExpression-Objekt, das ein Kind von parent ist.

Das expression JavaScript wird in ctxt QQmlContext ausgeführt. Falls angegeben, sind die Eigenschaften des scope Objekts während der Ausführung des Ausdrucks ebenfalls im Geltungsbereich.

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

Erstellen Sie ein QQmlExpression-Objekt, das ein Kind von parent ist.

script liefert den auszuwertenden Ausdruck, den Kontext, in dem er ausgewertet wird, und das Bereichsobjekt, mit dem er ausgewertet wird. Falls angegeben, überschreiben ctxt und scope den Kontext und das Scope-Objekt, die von script bereitgestellt werden.

Siehe auch QQmlScriptString.

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

Zerstören Sie die Instanz QQmlExpression.

void QQmlExpression::clearError()

Löscht alle Ausdrucksfehler. Die nachfolgenden Aufrufe von hasError() 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 Quellort 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 es keine Verknüpfung gibt oder der QQmlContext zerstört worden ist.

QQmlEngine *QQmlExpression::engine() const

Gibt den QQmlEngine zurück, mit dem dieser Ausdruck verknüpft ist, oder nullptr, wenn es keine Verknüpfung gibt oder der QQmlEngine zerstört worden ist.

QQmlError QQmlExpression::error() const

Gibt alle Fehler des letzten Aufrufs von evaluate() zurück. Wenn kein Fehler auftrat, wird eine ungültige QQmlError Instanz zurückgegeben.

Siehe auch hasError() und clearError().

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

Evauliert den Ausdruck und gibt das Ergebnis der Auswertung oder eine ungültige QVariant zurück, wenn der Ausdruck ungültig ist oder ein Fehler vorliegt.

valueIsUndefined wird auf true gesetzt, wenn der Ausdruck zu einem undefinierten Wert führte.

Siehe auch hasError() und error().

QString QQmlExpression::expression() const

Gibt die Zeichenkette des Ausdrucks zurück.

Siehe auch setExpression().

bool QQmlExpression::hasError() const

Gibt true zurück, wenn der letzte Aufruf von evaluate() zu einem Fehler führte, andernfalls false.

Siehe auch error() und clearError().

int QQmlExpression::lineNumber() const

Gibt die Zeilennummer der Quelldatei für diesen Ausdruck zurück. Der Quellort muss zuvor durch den Aufruf von setSourceLocation() festgelegt worden sein.

bool QQmlExpression::notifyOnValueChanged() const

Gibt true zurück, wenn das Signal valueChanged() ausgegeben wird, wenn sich der ausgewertete Wert des Ausdrucks ändert.

Siehe auch setNotifyOnValueChanged().

QObject *QQmlExpression::scopeObject() const

Gibt das Scope-Objekt des Ausdrucks zurück, falls vorhanden, ansonsten 0.

Zusätzlich zu den Daten, die durch den Ausdruck QQmlContext bereitgestellt werden, sind auch die Eigenschaften des Bereichsobjekts während der Auswertung des Ausdrucks im Bereich.

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.

Wenn notifyOnChange wahr ist, überwacht QQmlExpression die Eigenschaften, die an der Auswertung des Ausdrucks beteiligt sind, und sendet QQmlExpression::valueChanged(), wenn sie sich geändert haben. Auf diese Weise kann eine Anwendung sicherstellen, dass jeder Wert, der mit dem Ergebnis des Ausdrucks verbunden ist, auf dem neuesten Stand bleibt.

Wenn notifyOnChange auf false gesetzt ist (Standardeinstellung), überwacht QQmlExpression die an der Auswertung des Ausdrucks beteiligten Eigenschaften nicht, und QQmlExpression::valueChanged() wird nie ausgegeben. 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)

Setzen Sie den Ort dieses Ausdrucks auf line und column von url. Diese Informationen werden von der Skript-Engine verwendet.

QString QQmlExpression::sourceFile() const

Gibt die URL der Quelldatei für diesen Ausdruck zurück. Der Quellort muss zuvor durch den Aufruf von setSourceLocation() festgelegt worden sein.

[signal] void QQmlExpression::valueChanged()

Wird jedes Mal ausgegeben, wenn sich der Wert des Ausdrucks seit der letzten Auswertung ändert. Der Ausdruck muss mindestens einmal ausgewertet worden sein (durch Aufruf von QQmlExpression::evaluate()), bevor dieses Signal ausgegeben wird.

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