信号(signal)和槽(slot)是Qt的独特的设计,自然在QML中也被支持。
Item是QML所有类型的基类,Item类型不会显示在窗口上,但是可以支持信号和槽。本节就用Item编写一个信号和槽的实例。
1. 创建Qt Quick并编辑Main.qml
import QtQuick
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
MouseArea {
anchors.fill: parent
onClicked: {
sender.something("haha")
}
}
Item {
id: sender
signal something(message : string)
onSomething: (message) => {
console.log("Something happened(sender):", message)
}
}
Item {
id: receiver
Connections {
target: sender
function onSomething(message : string) {
console.log("Something happened(receiver):", message)
}
}
}
}
2. 运行程序