Seite 1 von 1

Signale überwachen?

Verfasst: 4. Juni 2008 10:09
von TheGrudge
Hi,

gibt es irgendein Programm, mit dem ich sehen kann, welche Signale zur Laufzeit gesendet werden? Oder eine Compiler-Option, die mir das irgendwie anzeigen kann?
Ich versuche gerade ein Programm zu debuggen, bei dem anscheinend irgendwie Signale kollidieren. Ich drücke zum Beispiel einen Knopf, der eine Lampe einfärbt, aber kurz danach wird die Lampe von irgend einem anderen Signal wieder zurückgesetzt.
Jetzt wäre es schön zu sehen, was eigentlich passiert, während ich diesen Knopf drücke, also welche Signale "durch die Gegend fliegen".
Geht so etwas?

Verfasst: 4. Juni 2008 10:29
von patrik08
mit void QObject::installEventFilter ( QObject * filterObj )
http://doc.trolltech.com/4.2/qobject.ht ... ventFilter
kann man alles abfangen was won einen QObject kommt und alles was daruber ist ....

sogar selber erstellte events...

Code: Alles auswählen

bool PMovie::event ( QEvent * e )
{
    /////qApp->processEvents();
   if ( e->type() == QEvent::User ) {
				    PngEventBuffer *ep = static_cast<PngEventBuffer *>(e);
            if (ep) {
            status(ep->pos(),ep->sum());
						return true;
            }
		}
  QLabel::event(e);   /* cath all not needed */    
}

Verfasst: 4. Juni 2008 13:09
von TheGrudge
Danke, das werde ich mal probieren.
Ich dachte es gibt vielleicht ein Programm oder eine Compileroption, die aus den moc Dateien automatisch mehr Ausgaben generieren kann und während der runtime jedes emittete Signal ausgibt.

Verfasst: 4. Juni 2008 19:20
von upsala
QObject::sender() verrät einem Slot wer ihn aufgerufen hat...