方法属性
对象类型的方法是可以被调用来执行一些处理或触发进一步事件的函数。可以将方法连接到信号,以便在信号发出时自动调用该方法。有关更多细节,请参阅信号和处理程序事件系统。
定义方法的属性
在c++中,可以为类型定义一个方法,方法是标记一个类的函数,然后用Q_INVOKABLE向QML类型系统注册,或者将它注册为类的Q_SLOT。另外,也可以使用以下语法将自定义方法添加到QML文档中的对象声明中:
function <functionName>([<parameterName>[, ...]]) { <body> }
方法可以添加到QML类型中,以定义独立的、可重用的JavaScript代码块。这些方法可以在内部调用,也可以由外部对象调用。
与信号不同,方法参数类型不必声明为var类型的默认值。
试图在同一类型块中声明具有相同名称的两个方法或信号是错误的。但是,新方法可以重用该类型上现有方法的名称。(这应该谨慎地进行,因为现有的方法可能被隐藏,变得不可访问。)
下面是一个带有calculateHeight()方法的矩形,在分配高度值时调用该方法:
import QtQuick 2.0
Rectangle {
id: rect
function calculateHeight() {
return rect.width / 2;
}
width: 100
height: calculateHeight()
}
如果方法有参数,则可以在方法内通过名称访问它们。下面,当点击鼠标区域时,它会调用moveTo()方法,该方法可以引用接收到的newX和newY参数来重新定位文本:
import QtQuick 2.0
Item {
width: 200; height: 200
MouseArea {
anchors.fill: parent
onClicked: label.moveTo(mouse.x, mouse.y)
}
Text {
id: label
function moveTo(newX, newY) {
label.x = newX;
label.y = newY;
}
text: "Move me!"
}
}
英文官方地址:https://doc.qt.io/qt-5/qtqml-syntax-objectattributes.html#method-attributes