QML学习笔记【05】:QML信号与槽

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" 定义槽函数,更直观。但是测试发现不行!!可能是高版本才支持
//            console.log(s,v)
//        }
//    }
    Connections{
        target: root
        onTestSig: { //槽函数为"on" 这种方式方式可以
            console.log(str,value)
        }
    }
}

你可能感兴趣的:(#,QML,qt5,qml)