如何在QML中捕获信号?

Mr.*_*.Tu 10 qt qml

我如何从一个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


Wes*_*ker 9

在另一个对象中,您只需添加一个on单词,后跟信号名称.例如:

Rectangle {
  YourQmlObject {
    onClicked: { ... }
  }
}
Run Code Online (Sandbox Code Playgroud)

(点击有点令人困惑的信号名称,因为它很常见.但是如果你已经调用了你的信号orange,你就会进行绑定onOrange:)


Kun*_*nal 5

你可以使用QML连接元素

 Connections {
 target: yourQmlObject 
 onClicked: foo(...)
 }
Run Code Online (Sandbox Code Playgroud)