我试图找出QML对象发出信号的最佳方式,以及许多其他QML元素来响应它.通常,如果您创建,则会signal mySignal自动为您调用一个处理程序,onMySignal但该处理程序仅存在于创建信号的同一元素中.
一个特别不优雅的解决方案可能是存储您想要在信号发生时更新的QML元素数组,然后在您的处理程序中循环遍历所有这些元素并执行您需要的操作.
如果没有更简单的方法,我会感到惊讶.我错过了QML中信号槽机制的明显用例吗?
您可以在QML中使用Connections组件来实现此目的
在Item与我们想赶信号:
MyItem {
id: itemWithSignal
onMySignal: {
console.log("I am sending my signal");
}
}
Run Code Online (Sandbox Code Playgroud)
在另一个Item我们使用Connections组件:
MyOtherItem {
id: itemSomewhereElse
Connections {
target: itemWithSignal
onMySignal: {
console.log("itemWithSignal just emitted its signal!");
}
}
}
Run Code Online (Sandbox Code Playgroud)
你也可以使用connect()in QML,它会是这样的:
MyOtherItem {
id: itemSomewhereElse
onMyOtherSignal: {
console.log("My signal is connected!");
}
Component.onCompleted: {
itemWithSignal.mySignal.connect(itemSomewhereElse.myOtherSignal);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2098 次 |
| 最近记录: |