2014-09-25 31 views
0

我有兩個qml文件。我會用一個qml文件的javascript與其他qml文件的插槽連接一個信號,但它似乎不起作用。第二個文件中的插槽不會執行。帶兩個qml文件的SIGNAL/SLOT。 SLOT將不會執行

在這裏,我與狹槽連接的信號(在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; 
    } 

控制檯中沒有錯誤,但插槽未執行。我做錯了什麼?感謝您的幫助。

回答

0

對不起,我有點愚蠢。我發佈的代碼是正確的,效果很好。問題在於,信號在連接到插槽之前發出。