qml connections 例子
时间: 2023-07-22 13:20:45 浏览: 151
以下是一个简单的例子,展示如何使用QML Connections来连接信号和槽:
```
import QtQuick 2.0
Rectangle {
width: 200
height: 200
MouseArea {
id: mouseArea
anchors.fill: parent
onClicked: {
// 发射一个自定义的信号
clickedSignal.send()
}
}
Connections {
// 信号源为clickedSignal
target: mouseArea
// 目标对象为rootItem
// 这里可以使用任何其他对象,只要该对象存在一个名为onClicked的槽函数即可
// 例如可以使用一个JavaScript对象
// target: myJavaScriptObject
// onClicked: myJavaScriptObject.handleClicked()
// 注意:如果目标对象是JavaScript对象,需要将该对象导出给QML引擎
// 例如:engine.rootContext().setContextProperty("myJavaScriptObject", myJavaScriptObject)
onClicked: rootItem.handleClicked()
}
function handleClicked() {
console.log("Rectangle clicked!")
}
}
```
在这个例子中,我们创建了一个矩形,并在其上添加了一个MouseArea。当用户点击MouseArea时,它将发射一个自定义的信号clickedSignal。然后我们使用Connections元素将这个信号连接到矩形的handleClicked函数上。当信号被触发时,它将调用handleClicked函数,并在控制台输出一条消息。
需要注意的是,目标对象必须有一个名为on信号名称的槽函数,以便接收信号。在这个例子中,我们将目标对象设置为rootItem,它是矩形的父级元素,因此它具有handleClicked函数。
阅读全文