我如何从一个qml组件发送信号到另一个?
以下是一个例子:
Rectangle {
id: main
width: 360; height: 360
signal clicked()
Text {
id: testStr
anchors.centerIn: parent
text: "Hello World"
}
MouseArea {
id: mouseArea
anchors.fill: parent
onClicked: { Qt.quit(); }
}
Component.onCompleted: clicked()
onClicked: testStr.text = "Demo"
}
Run Code Online (Sandbox Code Playgroud)
如何捕获其他组件中的信号?
ser*_*rgk 13
您应该使用connect()
组件信号的方法(信号本身就是对象).
function clickHandler() {
console.log('main clicked')
}
Component.onCompleted: {
main.clicked.connect(clickHandler)
}
Run Code Online (Sandbox Code Playgroud)
请参阅http://developer.qt.nokia.com/doc/qt-4.8/qmlevents.html
在另一个对象中,您只需添加一个on
单词,后跟信号名称.例如:
Rectangle {
YourQmlObject {
onClicked: { ... }
}
}
Run Code Online (Sandbox Code Playgroud)
(点击有点令人困惑的信号名称,因为它很常见.但是如果你已经调用了你的信号orange
,你就会进行绑定onOrange:
)
你可以使用QML连接元素
Connections {
target: yourQmlObject
onClicked: foo(...)
}
Run Code Online (Sandbox Code Playgroud)