【问题标题】:SIGNAL / SLOT with two qml files. SLOT will not execute带有两个 qml 文件的 SIGNAL / SLOT。 SLOT 不会执行
【发布时间】:2014-09-25 16:50:14
【问题描述】:

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

这里我把信号和槽连接起来(在ma​​in.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
    }

我在这里定义了信号(在 ma​​in.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;
    }

控制台没有错误,但槽没有执行。我做错什么了?感谢您的帮助。

【问题讨论】:

    标签: javascript c++ qt qml


    【解决方案1】:

    对不起,我有点笨。我发布的代码是正确的并且运行良好。问题是,信号是在连接到插槽之前发出的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多