带有两个qml文件的SIGNAL / SLOT。 SLOT不会执行

时间:2014-09-25 16:50:15

标签: javascript c++ qt qml

我有两个qml文件。我会用一个qml文件的javascript与另一个qml文件的插槽连接一个信号,但它似乎不起作用。第二个文件中的插槽将不会执行。

这里我将信号与插槽连接(在 main.qml ,GridLayout,onComplete中):

    var component = Qt.createComponent("Field.qml")
    for (var i=0; i<30; i++) {
        var object = component.createObject(mainGridLayout);
        object.boardX = i % 5;
        object.boardY = i / 5;
        object.board = gameboard;

        gameboard.fieldChanged.connect(object.fieldChange);  //<-- Connect
    }

我在这里定义了信号(在 main.qml 中):

    Gameboard {
        id: gameboard
        signal fieldChanged(int x, int y, int val) //<-- Signal defined here

        onBoardFieldChanged: {  //<-- Works fine from C++
            fieldChanged(x,y,value);
        }
    }

我在这里定义了一个插槽(在 Field.qml 中):

    function fieldChange(x, y, val){  //<-- Slot method
        if (boardX==x && boardY == y) caption.text = val;
    }

控制台中没有错误,但插槽未执行。我做错了什么?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

抱歉,我有点傻。我发布的代码是正确的,效果很好。问题是,信号是在连接到插槽之前发出的。