PySide6.QtQml.QQmlExpression

class QQmlExpression

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

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__()

创建一个无效的 QQmlExpression

由于表达式不会有相关的QQmlContext,这将是一个空表达式对象,其值将始终是一个无效的QVariant。

__init__(ctxt, scope, expression[, parent=None])
Parameters:

创建一个QQmlExpression对象,它是parent的子对象。

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

__init__(script[, ctxt=None[, scope=None[, parent=None]]])
Parameters:

创建一个QQmlExpression对象,它是parent的子对象。

script 提供了要评估的表达式、评估的上下文以及用于评估的范围对象。如果提供了 ctxtscope,它们将覆盖由 script 提供的上下文和范围对象。

另请参阅

QQmlScriptString

clearError()

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

另请参阅

hasError() error()

columnNumber()
Return type:

整数

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

context()
Return type:

QQmlContext

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

engine()
Return type:

QQmlEngine

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

error()
Return type:

QQmlError

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

另请参阅

hasError() clearError()

evaluate()
Return type:

PyTuple

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

valueIsUndefined 如果表达式的结果是未定义的值,则设置为 true。

另请参阅

hasError() error()

expression()
Return type:

字符串

返回表达式字符串。

另请参阅

setExpression()

hasError()
Return type:

布尔

如果最后一次调用evaluate()导致错误,则返回true,否则返回false。

另请参阅

error() clearError()

lineNumber()
Return type:

整数

返回此表达式的源文件行号。源位置必须先前通过调用setSourceLocation()设置。

notifyOnValueChanged()
Return type:

布尔

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

scopeObject()
Return type:

QObject

如果提供了表达式的范围对象,则返回该对象,否则返回0。

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

setExpression(expression)
Parameters:

expression – 字符串

将表达式设置为expression

另请参阅

expression()

setNotifyOnValueChanged(notifyOnChange)
Parameters:

notifyOnChange – 布尔值

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

如果 notifyOnChange 为 true,QQmlExpression 将监视表达式评估中涉及的属性,并在它们发生变化时发出 valueChanged()。这允许应用程序确保与表达式结果相关的任何值保持最新。

如果 notifyOnChange 为 false(默认值),QQmlExpression 将不会监控表达式评估中涉及的属性,并且 valueChanged() 永远不会被触发。如果应用程序希望“一次性”评估表达式,这种方式更高效。

另请参阅

notifyOnValueChanged()

setSourceLocation(fileName, line[, column=0])
Parameters:
  • fileName – str

  • line – int

  • column – 整数

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

sourceFile()
Return type:

字符串

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

valueChanged()

每次表达式值从上一次评估时发生变化时发出。表达式必须至少被评估一次(通过调用evaluate()),然后才会发出此信号。