Класс 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