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

Alles rund um die Programmierung mit Qt
Antworten
sigvdr
Beiträge: 100
Registriert: 1. Juli 2008 19:29

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

Beitrag 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
Zuletzt geändert von sigvdr am 9. Dezember 2013 09:22, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

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

Beitrag 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
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
sigvdr
Beiträge: 100
Registriert: 1. Juli 2008 19:29

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

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

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

Beitrag von Christian81 »

ja, innerhalb von connect() löst er auf die Slot-Funktion auf, nicht auf das Macro - das habe ich auch gemerkt :)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten