bir sinyal kanıtlar olmaksızın .disconnect()
çağırmak mümkün değildir:Qt5 QML'deki bir sinyalden tüm yuvaların bağlantısı kesilebilir mi? QML yılında
file:mainwindow.qml:107: Error: Function.prototype.disconnect: no arguments given
Peki nasıl her biri belirtmeden TÜM yuvaları kesebilirsiniz? Veya belki de sinyal nesnesini C++
'a geçirerek ve bunu bir şekilde kesmek mümkün mü? Veya herhangi bir geçici çözüm var mı?
Ulaşmak istediğim hedef, sinyale farklı yuvalar bağlayarak bir nesnenin davranışını değiştirmek. Örneğin:
Item {
property var fire
// Any qml object. In this example it is ActionExecutor which emits actionRequest
ActionExecutor {
//signal actionRequest(int actionType)
onActionRequest: fire(actionType)
}
Action {
shortcut: "Ctrl+S"
text: "One action"
onTriggered: {
parent.fire = function(actionType) {
console.log('one slot')
}
}
}
Action {
shortcut: "Ctrl+X"
text: "Another action"
onTriggered: {
parent.fire = function(actionType) {
console.log('Another slot')
}
}
}
}
Yani bu nesne yeniden atanabilir js: İçten JSObject çağıran bir sinyale sadece bir kez bağlamak:
object.disconnect() // disconnect all slots
object.connect(one_super_slot)
object.disconnect() // disconnect all slots
object.connect(another_super_slot)