在QML侧连接信号槽
- 在QML中声明一个信号
- 在C++中的类需要继承自Qobject
- 第一种方式使用Connections间接调用对象的槽函数
- 第二种方式在组件加载完成后使用信号的connect函数连接(为什么可以使用connect)因为声明了一个信号后,经过qmake后这个信号变成一个对象
import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.5
import MyObj 1.0
Window {
id : window
width: 640
height: 480
visible: true
title: qsTr("Hello World")
signal qmlSig(var s, var i)
Button {
onClicked: {
qmlSig("张三", 20)
}
}
MyObject {
id : myobj
}
// 第一种绑定方式,
Connections {
target: window
function onQmlSig(s, i){
myobj.cppSlot(s, i)
}
}
// 第二种绑定方式
Component.onCompleted : {
qmlSig.connect(myobj.cppSlot)
}
}
在C++侧连接信号
在c++侧连接QML信号,需要使用qml引擎的rootObjects方法来找到要发射信号的对象,然后使用connect进行连接