2014-09-25 2 views
0

У меня есть два qml-файла. Я бы подключил сигнал с javascript одного qml-файла с слотом другого qml-файла, но, похоже, он не работает. Слот во втором файле не будет выполнен.SIGNAL/SLOT с двумя qml-файлами. 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

Извините, я был немного глуп. Код, который я опубликовал, является правильным и работает хорошо. Проблема заключалась в том, что сигнал излучался до того, как он был подключен к слоту.

Смежные вопросы