1、默认信号槽
QML中,对所以的变量会默认生成 "Changed" 信号,和对应的 "onXxx>Changed" 槽函数。信号默认绑定的槽函数为 "on"
property int value: 0
onValueChanged: {
console.log("onValueChanged: ", value)
}
//按钮点击会触发clicked信号,对应的 onClicked 槽函数就会执行
Button{
id: btn
width: 50; height: 50
onClicked: { //点击后发送信号
console.log("onClicked")
}
}
2、自定义信号槽
QML中,可以使用 signal 自定义有参或是无参的信号,使用 Connections 创建信号的处理
Window {
id: root
width: 640; height: 480
visible: true
title: qsTr("信号槽")
color: "white"
//自定义信号,可以是无参、也可以是有参
signal testSig(string str, int value) //有参
//自定义函数用作信号槽函数
function func(str, value){
console.log(str,value)
}
Button{
id: btn
width: 50; height: 50
onClicked: { //点击后发送信号
testSig("dhl", 10)
}
}
// //绑定信号槽方式1:加载完后,用信号.connect绑定槽函数
// Component.onCompleted: {
// testSig.connect(func)
// }
//绑定信号槽方式2:使用Connections组件,直接编写信号的槽函数
// Connections{
// target: root
// function onTestSig(s, v) { //使用 function "on<Signal>" 定义槽函数,更直观。但是测试发现不行!!可能是高版本才支持
// console.log(s,v)
// }
// }
Connections{
target: root
onTestSig: { //槽函数为"on<Signal>" 这种方式方式可以
console.log(str,value)
}
}
}