2015-01-17 34 views
5

üst sınıf bileşeninin sinyal işleyicisi nasıl geçersiz kılınır:Böyle bir taban sınıfı öğesi şey var

Taban .qml:

Item { 
    Thing { 
     id: theThing; 

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

Ve Türetilmiş öğeyi yapmaya çalışıyorum - Derived.qml .

İşleyicisi theThing'u nasıl geçersiz kılar? Ben ... böyle şeyler denedim

Türetilmiş .qml:

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

ama sözdizimsel doğru bu ifade, ya da nasıl/olmadığını aslında nasıl gideceğimi söylemek için bir şey bulamıyorum hakkında!

cevap

4

Sen üst sınıfta özellik olarak sinyal işleyici kodunu tanımlamak ve türetilmiş kaleminde geçersiz kılabilirsiniz:

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

    Thing { 
     id: theThing; 

     onMySignal: handlerCode() 
    } 
} 

geçersiz kılma:

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

Müthiş, teşekkürler! – GreenAsJade

+0

Veya bir özellik eklemeden bile ... Sadece tabanda tanımlanmış bir işleve sahip olmak, aynı ismi kullanarak türetilmiş yeni bir tane oluşturabilirsin ... Bunu yapmak için sadece Üyelere yazın: callBackFunction() ' Hem Base hem de türetilmiş bileşenlerde basit 'callBackFunction()' yi tanımlayın –

İlgili konular