PySide6.QtQml.QQmlExpression¶
- class QQmlExpression¶
QQmlExpression
类在 QML 上下文中评估 JavaScript。更多…概要¶
方法¶
def
__init__()
def
clearError()
def
columnNumber()
def
context()
def
engine()
def
error()
def
evaluate()
def
expression()
def
hasError()
def
lineNumber()
def
scopeObject()
def
setExpression()
def
sourceFile()
信号¶
def
valueChanged()
注意
本文档可能包含从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:
ctxt –
QQmlContext
scope –
QObject
expression – 字符串
parent –
QObject
创建一个
QQmlExpression
对象,它是parent
的子对象。JavaScript 的
expression
将在ctxt
QQmlContext
中执行。如果指定了scope
对象,其属性也将在表达式执行期间处于作用域内。- __init__(script[, ctxt=None[, scope=None[, parent=None]]])
- Parameters:
脚本 –
QQmlScriptString
ctxt –
QQmlContext
scope –
QObject
parent –
QObject
创建一个
QQmlExpression
对象,它是parent
的子对象。script
提供了要评估的表达式、评估的上下文以及用于评估的范围对象。如果提供了ctxt
和scope
,它们将覆盖由script
提供的上下文和范围对象。另请参阅
- clearError()¶
清除任何表达式错误。在此之后调用
hasError()
将返回false。另请参阅
- columnNumber()¶
- Return type:
整数
返回此表达式的源文件列号。源位置必须先前通过调用
setSourceLocation()
设置。- context()¶
- Return type:
返回此表达式关联的
QQmlContext
,如果没有关联或QQmlContext
已被销毁,则返回None
。- engine()¶
- Return type:
返回此表达式关联的
QQmlEngine
,如果没有关联或QQmlEngine
已被销毁,则返回None
。返回上次调用
evaluate()
时的任何错误。如果没有错误,则返回一个无效的QQmlError
实例。另请参阅
- evaluate()¶
- Return type:
PyTuple
评估表达式,返回评估结果,如果表达式无效或出错,则返回无效的QVariant。
valueIsUndefined
如果表达式的结果是未定义的值,则设置为 true。另请参阅
- expression()¶
- Return type:
字符串
返回表达式字符串。
另请参阅
- hasError()¶
- Return type:
布尔
如果最后一次调用
evaluate()
导致错误,则返回true,否则返回false。另请参阅
- lineNumber()¶
- Return type:
整数
返回此表达式的源文件行号。源位置必须先前通过调用
setSourceLocation()
设置。- notifyOnValueChanged()¶
- Return type:
布尔
如果表达式的评估值发生变化时发出
valueChanged()
信号,则返回true。如果提供了表达式的范围对象,则返回该对象,否则返回0。
除了表达式提供的
QQmlContext
数据外,作用域对象的属性在表达式评估期间也在作用域内。- setExpression(expression)¶
- Parameters:
expression – 字符串
将表达式设置为
expression
。另请参阅
- setNotifyOnValueChanged(notifyOnChange)¶
- Parameters:
notifyOnChange – 布尔值
设置当表达式的评估值发生变化时是否发出
valueChanged()
信号。如果
notifyOnChange
为 true,QQmlExpression
将监视表达式评估中涉及的属性,并在它们发生变化时发出valueChanged()
。这允许应用程序确保与表达式结果相关的任何值保持最新。如果
notifyOnChange
为 false(默认值),QQmlExpression
将不会监控表达式评估中涉及的属性,并且valueChanged()
永远不会被触发。如果应用程序希望“一次性”评估表达式,这种方式更高效。- setSourceLocation(fileName, line[, column=0])¶
- Parameters:
fileName – str
line – int
column – 整数
将此表达式的位置设置为
line
和column
的url
。此信息由脚本引擎使用。- sourceFile()¶
- Return type:
字符串
返回此表达式的源文件URL。源位置必须先前通过调用
setSourceLocation()
设置。- valueChanged()¶
每次表达式值从上一次评估时发生变化时发出。表达式必须至少被评估一次(通过调用
evaluate()
),然后才会发出此信号。