如何连接QML中stackview.push创建的对象的信号



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)
})
})
}
}

最新更新