2015-01-17 5 views
5

슈퍼 클래스 구성 요소의 신호 처리기를 재정의하는 방법 :나는이 같은 기본 클래스 항목 뭔가가

자료를 .qml :

Item { 
    Thing { 
     id: theThing; 

     onMySignal: { console.log("The signal"); } 
    } 
} 

그리고 파생 항목을 만들려고 노력 해요 - Derived.qml을 .

onMySignal 처리기를 theThing으로 대체하려면 어떻게해야합니까? 나는 ... 같은 물건을 시도

파생 .qml :

Base { 
    theThing.onMySignal: { console.log("Do different things with theThing in Derived") } 
} 

하지만 난 구문을 제대로 표현하기 위해, 또는 방법/여부 것은 실제로 이동하는 방법을 말해 아무것도 찾을 수 없습니다 그것에 대해!

답변

4

당신은 슈퍼 클래스에 속성으로 신호 처리기의 코드를 정의하고 파생 상품에서이를 대체 할 수 있습니다 :

Item { 
    property var handlerCode: function() { console.log("In Superclass") }; 

    Thing { 
     id: theThing; 

     onMySignal: handlerCode() 
    } 
} 

재정 :

Base { 
    handlerCode: function() { console.log("In Derived Item!") }; 
} 
+0

최고, 감사합니다! – GreenAsJade

+0

심지어 속성을 추가하지 않고 ... 기본으로 정의 된 함수를 가지고 있으면 같은 이름으로 파생 된 새 함수를 생성하여 재정의 할 수 있습니다 ... Base에서 'onSignal : callBackFunction()'을 수행하고 Base와 파생 된 컴포넌트 모두에서 간단한'callBackFunction()'을 정의하십시오. –