class QQmlExpression#

QQmlExpression 类在 QML 上下文中评估 JavaScript。 更多

Inheritance diagram of PySide6.QtQml.QQmlExpression

摘要#

方法#

信号#

注意

此文档可能包含从C++自动转换到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建工单来告诉我们。

详细说明#

例如,给定一个文件main.qml如下

以下代码在上述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
__init__(arg__1, arg__2, arg__3[, arg__4=None])#
参数::

创建一个孩子为parentQQmlExpression对象。

JavaScript表达式将在ctxt QQmlContext下执行。如果指定了,scope对象的属性也将表达式执行期间归属于此作用域中。

__init__(arg__1[, arg__2=None[, arg__3=None[, arg__4=None]]])
参数::

创建一个孩子为parentQQmlExpression对象。

脚本提供了要评估的表达式,以及在哪个上下文中评估它,以及用哪个作用域对象来评估它。若提供,ctxtscope将覆盖脚本提供的上下文和作用域对象。

另请参阅

QQmlScriptString

__init__()

创建一个无效的QQmlExpression

因为表达式将没有关联的QQmlContext,这将是一个空表达式对象,其值将总是无效的QVariant。

clearError()#

清除任何表达式错误。在此之后调用hasError()将返回false。

另请参阅

hasError() error()

columnNumber()#
返回类型::

int

返回这个表达式的源文件列号。源位置必须在之前通过调用setSourceLocation()设置。

context()#
返回类型::

QQmlContext

返回与该表达式关联的QQmlContext,如果没有关联或QQmlContext已被销毁,则返回None

engine()#
返回类型::

QQmlEngine

返回与该表达式关联的QQmlEngine,如果没有关联或QQmlEngine已被销毁,则返回None

error()#
返回类型::

QQmlError

返回最后一次调用evaluate()时的任何错误。如果没有错误,则返回一个无效的QQmlError实例。

另请参阅

hasError() clearError()

evaluate()#
返回类型::

PyTuple

评估表达式,返回评估结果,如果表达式无效或有错误,则返回无效的QVariant。

valueIsUndefined被设置为true,如果表达式产生了一个未定义的值。

另请参阅

hasError() error()

expression()#
返回类型::

str

返回表达式字符串。

另请参阅

setExpression()

hasError()#
返回类型::

bool

如果最后一次调用evaluate()产生了错误,则返回true,否则为false。

另请参阅

error() clearError()

lineNumber()#
返回类型::

int

获取表达式的源文件行号。必须通过调用 setSourceLocation() 来预先设置源位置。

notifyOnValueChanged()#
返回类型::

bool

如果表达式的评估值发生变化时发出 valueChanged() 信号,则返回 true。

scopeObject()#
返回类型::

QObject

如果提供了表达式的作用域对象,则返回表达式的作用域对象,否则返回 0。

除了表达式的 QQmlContext 提供的数据外,作用域对象的属性在表达式评估期间也处于作用域内。

setExpression(arg__1)#
参数::

arg__1 – str

将表达式设置为 expression

另请参阅

expression()

setNotifyOnValueChanged(arg__1)#
参数::

arg__1 – bool

设置是否在表达式的评估值变化时发出 valueChanged() 信号。

如果 notifyOnChange 为 true,则 QQmlExpression 将监视涉及表达式评估的属性,并且在它们发生变化时发出 valueChanged()。这使得应用程序可以确保与表达式的结果关联的任何值始终保持最新。

如果 notifyOnChange 为 false(默认值),则 QQmlExpression 将不会监视涉及表达式评估的属性,并且 valueChanged() 将永远不会被发出。如果应用程序想要对表达式进行一次性的评估,这将更有效率。

另请参阅

notifyOnValueChanged()

setSourceLocation(fileName, line[, column=0])#
参数::
  • fileName – str

  • line – int

  • column – int

将该表达式的位置设置为 urllinecolumn。此信息由脚本引擎使用。

sourceFile()#
返回类型::

str

返回此表达式的源文件URL。必须通过调用 setSourceLocation() 设置了源位置。

valueChanged()#

在表达式的值从上次评估以来发生变化时发出。在发出此信号之前,表达式必须至少评估过一次(通过调用 evaluate() )。