QQmlExpression 类
QQmlExpression 类计算 QML 上下文中的 JavaScript。 更多...
头文件 | #include <QQmlExpression> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Qml) target_link_libraries(mytarget PRIVATE Qt6::Qml) |
qmake | QT += qml |
继承自 | QObject |
公共函数
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 |
信号
void | valueChanged() |
详细描述
例如,给定一个类似这样的文件 main.qml
import QtQuick 2.0 Item { width: 200; height: 200 }
以下代码在上面的 QML 上下文中评估一个 JavaScript 表达式
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
成员函数文档
QQmlExpression::QQmlExpression()
创建一个无效的 QQmlExpression。
由于表达式没有关联的 QQmlContext,这将是空表达式对象,其值始终是无效的 QVariant。
QQmlExpression::QQmlExpression(QQmlContext *ctxt, QObject *scope, const QString &expression, QObject *parent = nullptr)
创建一个作为 父对象 的子对象的 QQmlExpression 对象。
JavaScript 表达式将在 ctxt QQmlContext 中执行。如果指定,作用域 对象的属性也将在该表达式的执行期间生效。
[显式]
QQmlExpression::QQmlExpression(const QQmlScriptString &script, QQmlContext *ctxt = nullptr, QObject *scope = nullptr, QObject *parent = nullptr)
创建一个作为 父对象 的子对象的 QQmlExpression 对象。
脚本提供要评估的表达式、评估它所在的环境以及用于评估的作用域对象。如果提供,ctxt 和 scope 将覆盖脚本提供的环境和作用域对象。
另请参阅 QQmlScriptString。
[重写虚函数 noexcept]
QQmlExpression::~QQmlExpression()
销毁 QQmlExpression 实例。
void QQmlExpression::clearError()
清除任何表达式错误。在此之后调用 hasError() 将返回 false。
int QQmlExpression::columnNumber() const
返回此表达式对应源文件的列号。必须通过调用 setSourceLocation() 来设置源位置。
QQmlContext *QQmlExpression::context() const
返回与该表达式关联的 QQmlContext,如果没有关联或者 QQmlContext 已被销毁,则返回 nullptr
。
QQmlEngine *QQmlExpression::engine() const
返回与该表达式关联的 QQmlEngine,如果没有关联或者 QQmlEngine 已被销毁,则返回 nullptr
。
QQmlError QQmlExpression::error() const
返回上次调用 evaluate() 时的任何错误。如果没有错误,则返回一个无效的 QQmlError 实例。
另请参阅 hasError() 和 clearError。
QVariant QQmlExpression::evaluate(bool *valueIsUndefined = nullptr)
评估表达式,返回评估结果,若表达式无效或有错误,则返回一个无效的 QVariant。
valueIsUndefined 被设置为 true,如果表达式产生的值为未定义。
QString QQmlExpression::expression() const
返回表达式字符串。
另请参阅 setExpression。
bool QQmlExpression::hasError() const
如果上次调用 evaluate() 导致错误,则返回 true,否则返回 false。
另请参阅error() 和 clearError()。
int QQmlExpression::lineNumber() const
返回此表达式的源文件行号。必须通过调用 setSourceLocation() 设置源位置。
bool QQmlExpression::notifyOnValueChanged() const
如果表达式的评估值更改时发出 valueChanged() 信号,则返回 true。
另请参阅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)
将此表达式的位置设置为 url 的 line 和 column。这些信息用于脚本引擎。
QString QQmlExpression::sourceFile() const
返回此表达式的源文件 URL。必须通过调用 setSourceLocation() 设置源位置。
[信号]
void QQmlExpression::valueChanged()
每当表达式的值从上次评估以来发生变化时都会发出。在发出此信号之前,表达式必须至少被评估过一次(通过调用QQmlExpression::evaluate)。
© 2024 Qt公司限公司。本文档中包含的文档贡献均为各自所有者的版权。本提供的文档受