2015-01-17 26 views
5

ho una voce di classe di base qualcosa di simile:Come ignorare gestore dei segnali di componente superclasse

Base .qml:

Item { 
    Thing { 
     id: theThing; 

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

E sto cercando di fare un oggetto derivato - Derived.qml .

Come è possibile ignorare il gestore onMySignal di theThing? Ho provato cose come questa ...

Derivato .qml:

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

ma non riesco a trovare qualcosa da dirmi come esprimere questo sintatticamente corretta, o se/come andare in realtà a proposito!

risposta

4

È possibile definire il codice del gestore di segnali come una proprietà nella superclasse e sostituirla nella voce derivati:

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

    Thing { 
     id: theThing; 

     onMySignal: handlerCode() 
    } 
} 

Overriding:

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

Impressionante, grazie! – GreenAsJade

+0

O anche senza aggiungere una proprietà ... Solo avendo una funzione definita in base, puoi semplicemente crearne una nuova in derivato con lo stesso nome per sovrascriverla ... Quindi basta "onSignal: callBackFunction()" in Base e definisci il semplice 'callBackFunction()' in Base e i componenti derivati ​​che vuoi –

Problemi correlati