Seite 1 von 1

erledigt! Wie oder Wo ist das Macro "SLOT()" definiert?

Verfasst: 8. Dezember 2013 19:39
von sigvdr
Nach der Definition von "connect"

Code: Alles auswählen

bool QObject::connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * method, Qt::ConnectionType type = Qt::AutoConnection )
kann ein "SLOT" als Parameter const char * verwendet werden.
Also wird ein Programm in dieser Form die Ergebnisse vom Macro SLOT anzeigen:

Code: Alles auswählen

void debugSlot(const char *slotName) {
    qDebug( slotName );
}

debugSlot( SLOT( MeinSlot()  ));
debugSlot( SLOT( test() ));
Als Ausgabe erhalte ich bei mir :

Code: Alles auswählen

1MeinSlot()
1test()
Frage: Woher kommt die "1" ? ist das irgendwo definiert?

Gruß Sig

Re: Wie oder Wo ist das Macro "SLOT()" definiert?

Verfasst: 8. Dezember 2013 20:25
von Christian81
Einfach im Qt-Creator 'SLOT' in eine cpp-Datei schreiben und mit F2 zur Definition springen:

qobjectdefs.h

Code: Alles auswählen

#define SLOT(a) "1"#a
#define SIGNAL(a) "2"#a

Re: Wie oder Wo ist das Macro "SLOT()" definiert?

Verfasst: 9. Dezember 2013 09:21
von sigvdr
Danke genau das hatte ich gesucht.

Geht nicht! hätte ich fast geschrieben, denn das hatte ich selbst schon versucht.
Eigenartigerweise geht es nicht, wenn ich das auf einem Keyword SLOT (....) innerhalb einer connect Function versuche.

Gruß Sig

Re: erledigt! Wie oder Wo ist das Macro "SLOT()" definiert?

Verfasst: 9. Dezember 2013 19:50
von Christian81
ja, innerhalb von connect() löst er auf die Slot-Funktion auf, nicht auf das Macro - das habe ich auch gemerkt :)