2013-10-25 2 views
3

QML 객체가 신호를 보내고 다른 많은 QML 요소가 응답하는 가장 좋은 방법을 찾아 내려고 노력 중입니다. 일반적으로 signal mySignal을 만들면 onMySignal이라는 핸들러가 자동으로 생성되지만 해당 핸들러는 신호를 생성 한 요소와 동일한 요소 내에 만 존재합니다.QML : 하나의 신호, 다중 슬롯, 가능합니까?

특히 미풍 답답한 솔루션은 신호가 발생할 때 업데이트하려는 QML 요소의 배열을 저장 한 다음 처리기에서 모든 요소를 ​​반복하고 필요한 것을 수행하는 것입니다.

더 쉬운 방법이 없다면 놀랄 것입니다. QML에서 신호 슬롯 메커니즘의 사용 사례가 누락 되었습니까?

+0

맞춤 연결을 만드는 방법이 있어야합니다. –

답변

4

당신은 달성하기 위해 QML에서 Connections 구성 요소를 사용할 수있는이

우리가 잡으려고 원하는 신호와 함께 Item : 다른 Item에서

MyItem { 
    id: itemWithSignal 

    onMySignal: { 
    console.log("I am sending my signal"); 
    } 
} 

을 우리가 Connections 구성 요소를 사용

MyOtherItem { 
    id: itemSomewhereElse 

    Connections { 
    target: itemWithSignal 

    onMySignal: { 
     console.log("itemWithSignal just emitted its signal!"); 
    } 
    } 
} 

connect()QML에 사용할 수도 있습니다. 예 :

MyOtherItem { 
    id: itemSomewhereElse 

    onMyOtherSignal: { 
    console.log("My signal is connected!"); 
    } 

    Component.onCompleted: { 
    itemWithSignal.mySignal.connect(itemSomewhereElse.myOtherSignal); 
    } 
}