- class QQmlExpression#
QQmlExpression
类在 QML 上下文中评估 JavaScript。 更多…摘要#
方法#
def
__init__()
def
clearError()
定义
context()
定义
engine()
定义
error()
定义
evaluate()
定义
expression()
定义
hasError()
定义
lineNumber()
定义
sourceFile()
信号#
注意
此文档可能包含从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])#
- 参数::
arg__1 –
QQmlContext
arg__2 –
QObject
arg__3 – 字符串
arg__4 – QObject
创建一个孩子为
parent
的QQmlExpression
对象。JavaScript表达式将在
ctxt
QQmlContext下执行。如果指定了,scope
对象的属性也将表达式执行期间归属于此作用域中。- __init__(arg__1[, arg__2=None[, arg__3=None[, arg__4=None]]])
- 参数::
arg__1 – QQmlScriptString
arg__2 – QQmlContext
arg__3 – QObject
arg__4 – QObject
创建一个孩子为
parent
的QQmlExpression
对象。脚本提供了要评估的表达式,以及在哪个上下文中评估它,以及用哪个作用域对象来评估它。若提供,
ctxt
和scope
将覆盖脚本提供的上下文和作用域对象。另请参阅
- __init__()
创建一个无效的
QQmlExpression
。因为表达式将没有关联的QQmlContext,这将是一个空表达式对象,其值将总是无效的QVariant。
- clearError()#
清除任何表达式错误。在此之后调用
hasError()
将返回false。另请参阅
- columnNumber()#
- 返回类型::
int
返回这个表达式的源文件列号。源位置必须在之前通过调用
setSourceLocation()
设置。- context()#
- 返回类型::
返回与该表达式关联的
QQmlContext
,如果没有关联或QQmlContext
已被销毁,则返回None
。- engine()#
- 返回类型::
返回与该表达式关联的
QQmlEngine
,如果没有关联或QQmlEngine
已被销毁,则返回None
。返回最后一次调用
evaluate()
时的任何错误。如果没有错误,则返回一个无效的QQmlError
实例。另请参阅
- evaluate()#
- 返回类型::
PyTuple
评估表达式,返回评估结果,如果表达式无效或有错误,则返回无效的QVariant。
valueIsUndefined
被设置为true,如果表达式产生了一个未定义的值。另请参阅
- expression()#
- 返回类型::
str
返回表达式字符串。
另请参阅
- hasError()#
- 返回类型::
bool
如果最后一次调用
evaluate()
产生了错误,则返回true,否则为false。另请参阅
- lineNumber()#
- 返回类型::
int
获取表达式的源文件行号。必须通过调用
setSourceLocation()
来预先设置源位置。- notifyOnValueChanged()#
- 返回类型::
bool
如果表达式的评估值发生变化时发出
valueChanged()
信号,则返回 true。如果提供了表达式的作用域对象,则返回表达式的作用域对象,否则返回 0。
除了表达式的
QQmlContext
提供的数据外,作用域对象的属性在表达式评估期间也处于作用域内。- setExpression(arg__1)#
- 参数::
arg__1 – str
将表达式设置为
expression
。另请参阅
- setNotifyOnValueChanged(arg__1)#
- 参数::
arg__1 – bool
设置是否在表达式的评估值变化时发出
valueChanged()
信号。如果
notifyOnChange
为 true,则QQmlExpression
将监视涉及表达式评估的属性,并且在它们发生变化时发出valueChanged()
。这使得应用程序可以确保与表达式的结果关联的任何值始终保持最新。如果
notifyOnChange
为 false(默认值),则QQmlExpression
将不会监视涉及表达式评估的属性,并且valueChanged()
将永远不会被发出。如果应用程序想要对表达式进行一次性的评估,这将更有效率。- setSourceLocation(fileName, line[, column=0])#
- 参数::
fileName – str
line – int
column – int
将该表达式的位置设置为
url
的line
和column
。此信息由脚本引擎使用。- sourceFile()#
- 返回类型::
str
返回此表达式的源文件URL。必须通过调用
setSourceLocation()
设置了源位置。- valueChanged()#
在表达式的值从上次评估以来发生变化时发出。在发出此信号之前,表达式必须至少评估过一次(通过调用
evaluate()
)。