QQmlExpression Class

The QQmlExpression class evaluates JavaScript in a QML context. 更多...

头文件: #include <QQmlExpression>
qmake: QT += qml
开始支持版本: Qt 5.0
基类: QObject

公有函数

QQmlExpression()
QQmlExpression(QQmlContext *ctxt, QObject *scope, const QString &expression, QObject *parent = Q_NULLPTR)
QQmlExpression(const QQmlScriptString &script, QQmlContext *ctxt = Q_NULLPTR, QObject *scope = Q_NULLPTR, QObject *parent = Q_NULLPTR)
virtual ~QQmlExpression()
void clearError()
int columnNumber() const
QQmlContext *context() const
QQmlEngine *engine() const
QQmlError error() const
QVariant evaluate(bool *valueIsUndefined = Q_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
  • 32 个公有函数继承自 QObject

信号

void valueChanged()

其他继承的成员

  • 1 个属性继承自 QObject
  • 1 个公有槽函数继承自 QObject
  • 1 个公有变量继承自 QObject
  • 10 个静态公有成员继承自 QObject
  • 9 个受保护的函数继承自 QObject
  • 2 个受保护的变量继承自 QObject

详细描述

The QQmlExpression class evaluates JavaScript in a QML context.

For example, given a file main.qml like this:


  import QtQuick 2.0

  Item {
      width: 200; height: 200
  }

The following code evaluates a JavaScript expression in the context of the above QML:


  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

Note that the Qt Quick 1 version is called QDeclarativeExpression.

成员函数

QQmlExpression::QQmlExpression()

Create an invalid QQmlExpression.

As the expression will not have an associated QQmlContext, this will be a null expression object and its value will always be an invalid QVariant.

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

Create a QQmlExpression object that is a child of parent.

The expression JavaScript will be executed in the ctxt QQmlContext. If specified, the scope object's properties will also be in scope during the expression's execution.

QQmlExpression::QQmlExpression(const QQmlScriptString &script, QQmlContext *ctxt = Q_NULLPTR, QObject *scope = Q_NULLPTR, QObject *parent = Q_NULLPTR)

Create a QQmlExpression object that is a child of parent.

The script provides the expression to be evaluated, the context to evaluate it in, and the scope object to evaluate it with. If provided, ctxt and scope will override the context and scope object provided by script.

参见 QQmlScriptString.

[virtual] QQmlExpression::~QQmlExpression()

Destroy the QQmlExpression instance.

void QQmlExpression::clearError()

Clear any expression errors. Calls to hasError() following this will return false.

参见 hasError() and error().

int QQmlExpression::columnNumber() const

Returns the source file column number for this expression. The source location must have been previously set by calling setSourceLocation().

QQmlContext *QQmlExpression::context() const

Returns the QQmlContext this expression is associated with, or 0 if there is no association or the QQmlContext has been destroyed.

QQmlEngine *QQmlExpression::engine() const

Returns the QQmlEngine this expression is associated with, or 0 if there is no association or the QQmlEngine has been destroyed.

QQmlError QQmlExpression::error() const

Return any error from the last call to evaluate(). If there was no error, this returns an invalid QQmlError instance.

参见 hasError() and clearError().

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

Evaulates the expression, returning the result of the evaluation, or an invalid QVariant if the expression is invalid or has an error.

valueIsUndefined is set to true if the expression resulted in an undefined value.

参见 hasError() and error().

QString QQmlExpression::expression() const

Returns the expression string.

参见 setExpression().

bool QQmlExpression::hasError() const

Returns true if the last call to evaluate() resulted in an error, otherwise false.

参见 error() and clearError().

int QQmlExpression::lineNumber() const

Returns the source file line number for this expression. The source location must have been previously set by calling setSourceLocation().

bool QQmlExpression::notifyOnValueChanged() const

Returns true if the valueChanged() signal is emitted when the expression's evaluated value changes.

参见 setNotifyOnValueChanged().

QObject *QQmlExpression::scopeObject() const

Returns the expression's scope object, if provided, otherwise 0.

In addition to data provided by the expression's QQmlContext, the scope object's properties are also in scope during the expression's evaluation.

void QQmlExpression::setExpression(const QString &expression)

Set the expression to expression.

参见 expression().

void QQmlExpression::setNotifyOnValueChanged(bool notifyOnChange)

Sets whether the valueChanged() signal is emitted when the expression's evaluated value changes.

If notifyOnChange is true, the QQmlExpression will monitor properties involved in the expression's evaluation, and emit QQmlExpression::valueChanged() if they have changed. This allows an application to ensure that any value associated with the result of the expression remains up to date.

If notifyOnChange is false (default), the QQmlExpression will not montitor properties involved in the expression's evaluation, and QQmlExpression::valueChanged() will never be emitted. This is more efficient if an application wants a "one off" evaluation of the expression.

参见 notifyOnValueChanged().

void QQmlExpression::setSourceLocation(const QString &url, int line, int column = 0)

Set the location of this expression to line and column of url. This information is used by the script engine.

QString QQmlExpression::sourceFile() const

Returns the source file URL for this expression. The source location must have been previously set by calling setSourceLocation().

[signal] void QQmlExpression::valueChanged()

Emitted each time the expression value changes from the last time it was evaluated. The expression must have been evaluated at least once (by calling QQmlExpression::evaluate()) before this signal will be emitted.