Spec-Zone.ru › Qt 5.6

Класс QQmlExpression

Класс QQmlExpression вычисляет JavaScript в контексте QML. Подробнее...

Заголовок: #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
  • 31 открытых функций, унаследованных от QObject

Сигналы

void valueChanged()
  • 2 сигнала, унаследованные от QObject

Дополнительные унаследованные члены

  • 1 свойство, унаследованное от QObject
  • 1 открытый слот, унаследованный от QObject
  • 11 статических открытых членов, унаследованных от QObject
  • 9 защищенных функций, унаследованных от QObject

Подробное описание

Класс QQmlExpression вычисляет JavaScript в контексте QML.

Например, приведённый файл main.qml выглядит так:

import QtQuick 2.0

Item {
    width: 200; height: 200
}

Следующий код вычисляет JavaScript-выражение в контексте вышеупомянутого 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

Обратите внимание, что версия Qt Quick 1 называется QDeclarativeExpression.

Документация по функциям-членам

QQmlExpression::QQmlExpression()

Создаёт недействительное выражение QQmlExpression.

Так как у выражения не будет связанного QQmlContext, это будет объект выражения со значением null, а его значение всегда будет недействительным QVariant.

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

Создаёт объект QQmlExpression, являющийся дочерним элементом parent.

JavaScript-выражение expression будет выполнено в QQmlContext ctxt. Если указано, свойства объекта scope также будут доступны при выполнении выражения.

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

Создаёт объект QQmlExpression, являющийся дочерним элементом parent.

script предоставляет выражение для вычисления, контекст для его вычисления и объект области видимости для его вычисления. Если указано, ctxt и scope переопределят контекст и объект области видимости, предоставленные script.

См. также QQmlScriptString.

[virtual] QQmlExpression::~QQmlExpression()

Уничтожает экземпляр QQmlExpression.

void QQmlExpression::clearError()

Очищает любые ошибки выражения. Вызовы hasError() после этого возвращают false.

См. также hasError() и error().

int QQmlExpression::columnNumber() const

Возвращает номер столбца в файле исходного кода для данного выражения. Расположение исходного кода должно быть предварительно установлено с помощью вызова setSourceLocation().

QQmlContext *QQmlExpression::context() const

Возвращает QQmlContext, с которым связано данное выражение, или 0, если нет связи или QQmlContext был уничтожен.

QQmlEngine *QQmlExpression::engine() const

Возвращает QQmlEngine, с которым связано данное выражение, или 0, если нет связи или QQmlEngine был уничтожен.

QQmlError QQmlExpression::error() const

Возвращает любую ошибку из последнего вызова evaluate(). Если ошибок не было, возвращается недействительный экземпляр QQmlError.

См. также hasError() и clearError().

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

Вычисляет выражение, возвращая результат вычисления или недействительный QVariant, если выражение недействительно или содержит ошибку.

valueIsUndefined устанавливается в true, если выражение привело к неопределённому значению.

См. также hasError() и error().

QString QQmlExpression::expression() const

Возвращает строку выражения.

См. также setExpression().

bool QQmlExpression::hasError() const

Возвращает true, если последний вызов evaluate() завершился с ошибкой, в противном случае false.

См. также error() и clearError().

int QQmlExpression::lineNumber() const

Возвращает номер строки в файле исходного кода для данного выражения. Расположение исходного кода должно быть предварительно установлено с помощью вызова setSourceLocation().

bool QQmlExpression::notifyOnValueChanged() const

Возвращает true, если сигнал valueChanged() генерируется при изменении вычисленного значения выражения.

См. также setNotifyOnValueChanged().

QObject *QQmlExpression::scopeObject() const

Возвращает объект области видимости выражения, если он задан, в противном случае 0.

В дополнение к данным, предоставленным контекстом QQmlContext выражения, свойства объекта области видимости также находятся в области видимости во время вычисления выражения.

void QQmlExpression::setExpression(const QString &expression)

Устанавливает выражение в expression.

См. также expression().

void QQmlExpression::setNotifyOnValueChanged(bool notifyOnChange)

Устанавливает, будет ли генерироваться сигнал valueChanged() при изменении вычисленного значения выражения.

Если notifyOnChange имеет значение true, QQmlExpression будет отслеживать свойства, участвующие в вычислении выражения, и генерировать QQmlExpression::valueChanged(), если они изменятся. Это позволяет приложению убедиться, что любое значение, связанное с результатом выражения, остается актуальным.

Если notifyOnChange имеет значение false (по умолчанию), QQmlExpression не будет отслеживать свойства, участвующие в вычислении выражения, и QQmlExpression::valueChanged() никогда не будет сгенерирован. Это более эффективно, если приложение хочет однократное вычисление выражения.

См. также notifyOnValueChanged().

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

Устанавливает расположение этого выражения в строке line и столбце column файла url. Эта информация используется движком сценариев.

QString QQmlExpression::sourceFile() const

Возвращает URL файла исходного кода для данного выражения. Расположение исходного кода должно быть установлено ранее вызовом setSourceLocation().

[signal] void QQmlExpression::valueChanged()

Событие, генерируемое каждый раз, когда значение выражения изменяется с момента последнего его вычисления. Выражение должно быть вычислено хотя бы один раз (с помощью QQmlExpression::evaluate()), прежде чем это событие будет генерироваться.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qqmlexpression.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API