Per questo ho creato due classi molto semplici, una Signal con tre semplici segnali:
void integerSignal(int emittingValue);
void voidSignal();
void floatSignal(float emittingFloatValue);
e una classe Slot con i relativi slot (e le loro semplici implementazioni):
// slot per ricezione di un segnale
// che accetta un parametro intero
void Slot::integerSlot(int emittedValue){
printf("\nSegnale intero ricevuto %d\n", emittedValue);
}
// slot per la ricezione di un segnale senza argomenti
void Slot::voidSlot(){
printf("\nSegnale void ricevuto\n");
}
Anzitutto, osservando i file prodotti dal moc compiler, si nota che gli oggetti sono identificati da una stringa che identifica anche i nomi simbolici degli slot/signal presenti (e i relativi nomi simbolici dei parametri):
//moc_signal.cpp
static const char qt_meta_stringdata_Signal[] = {
"Signal\0\0emittingValue\0integerSignal(int)\0"
"voidSignal()\0emittingFloatValue\0"
"floatSignal(float)\0"
};
// moc_slot.cpp
static const char qt_meta_stringdata_Slot[] = {
"Slot\0\0emittedValue\0integerSlot(int)\0"
"voidSlot()\0"
};
La prima parte della stringa rappresenta una sorta di intestazione, ovvero indica se quello che segue è relativo a segnali o slot.
Nessun commento:
Posta un commento