QML中有一个对象,它将使用stackview的.push
函数创建,如下所示:
stackview.push(myObject)
我想连接到来自myObject的信号。在物体内部,我有一个信号。
这就是我连接它的方式:
myObject.onMySignal.connect(function (){
console.log("Signal Recieved")
})
问题是我没有收到信号。所以我得出的结论是我做得不对。请帮忙。
以下是我完成解决方案的代码部分:
StackView {
width: parent.width
id: stackView
initialItem:HomeForm{height: root.height-toolbar.height ; width: root.width}
anchors.fill: parent
Component.onCompleted: {
initialItem.onSubjectClicked.connect(function(index){
stackView.push("qrc:/AttendanceList.qml")
AttendanceList.onSessionItemClicked.connect(function (data){
console.log("Attendance click registered with index: " + data)
})
})
}
}
在QML中,connect()
是一个信号方法,因此您可以这样使用它;或者将CCD_ 3连接到CCD_。
您在connect()
中使用信号处理程序,这是绝对错误的:
myObject.onMySignal.connect(function (){}) // Wrong
您必须在connect()
中使用信号名称而非处理程序
myObject.mySignal.connect(function (){}) // Correct signal to function
所以,你可以用它来发出这样的信号:
AttendanceList.sessionItemClicked.connect(mySignal)
或信号功能类似:
AttendanceList.sessionItemClicked.connect(function(){ ...})
在第二种形式中,它的信号到信号连接。。不要使用函数。
将信号连接到方法和信号
要访问推送的元素,必须使用currentItem
作为引用。请注意,也要关心@Mohammad Kanan的观点。
StackView {
width: parent.width
id: stackView
initialItem:HomeForm{height: root.height-toolbar.height ; width: root.width}
anchors.fill: parent
Component.onCompleted: {
initialItem.subjectClicked.connect(function(index){
stackView.push("qrc:/AttendanceList.qml")
stackView.currentItem.sessionItemClicked.connect(function (data){
console.log("Attendance click registered with index: " + data)
})
})
}
}