Problem mit Signal und Slot Mechanismus

Alles rund um die Programmierung mit Qt
Antworten
Mensch
Beiträge: 50
Registriert: 16. März 2008 19:44

Problem mit Signal und Slot Mechanismus

Beitrag von Mensch »

Hallo!

Hab folgenden Code geschrieben, aber leider tut sich nichts, wenn ich das Signal auslöse:

myGraphicsScene.h
class MyGraphicsScene : public QGraphicsScene
{
...

signals:
void mouseMoved ();
....
};


myGraphicsScene.cpp
void MyGraphicsScene::mousePressEvent ( QGraphicsSceneMouseEvent * mouseEvent )
{
...
emit mouseMoved();
}

Folgendes steht im MainWindow:

...
connect( scene, SIGNAL( mouseMoved() ), this, SLOT( ... ) );
...

scene ist dabei ein Pointer auf ein Objekt von MyGraphicsScene. Der SLOT ist in der Klasse definiert, in der das connect aufgerufen wird und lässt sich bei anderen Signalen prima ansteuern.
Die anderen connects klappen ohne Probleme, nur dieses eine eben nicht, was mache ich falsch?

Danke im Voraus!
Grüße
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Wo ist dein Q_OBJECT?
Mensch
Beiträge: 50
Registriert: 16. März 2008 19:44

Beitrag von Mensch »

Q_Object ist im QMainWindow, bzw der davon abgeleiteten Klasse.

class qtSiftApp : public QMainWindow, private Ui::qtSiftApplication
{
Q_OBJECT
private:
...

public:
qtSiftApp(QMainWindow *parent = 0);


public slots:
...
void markFeature();
};
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Mensch hat geschrieben:Q_Object ist im QMainWindow, bzw der davon abgeleiteten Klasse.
Dir ist schon klar dass du das für JEDE von QObject abgeleitete Klasse machen musst, nicht nur fürs MainWindow.
In deinem Fall auch für MyGraphicsScene!
Mensch
Beiträge: 50
Registriert: 16. März 2008 19:44

Beitrag von Mensch »

Danke! Das probier ich gleich mal...
Mensch
Beiträge: 50
Registriert: 16. März 2008 19:44

Beitrag von Mensch »

Wenn ich in die MyGraphicScene-Klasse auch Q_OBJECT schreibe, dann taucht in der Methode, in der ich einen Pointer auf eine MyGraphicScene Objekt anlege folgender Fehler auf:

undefined reference to `vtable for MyGraphicsScene'

Hab ich noch was vergessen?
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Ja, wenn du irgendwo Q_OBJECT reinschreibst musst du auch nochmal qmake auf dein Projektfile aufrufen, sonst wird nicht gemoct ;)
Mensch
Beiträge: 50
Registriert: 16. März 2008 19:44

Beitrag von Mensch »

Danke ;) Jetzt kompiliert es einwandfrei, allerdings funktioniert es immernoch nicht. Wenn ich in die Szene klicke wird nicht das ausgeführt was im connecteten SLOT steht. Wo kann ich noch Fehler gemacht haben? ;)

Grüße
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

schau mal zur debug laufzeit ins Meldung fenster (visual studio)
alternativ auf die console oder so .....
dort muessten warnungen kommen, wenn du was connectest, was nicht existiert .... sind meisten schreibfehler :-)

Ciao ...
Mensch
Beiträge: 50
Registriert: 16. März 2008 19:44

Beitrag von Mensch »

Hab's unter Ubuntu mit dem GNU debugger gemacht...Da wird kein Fehler gemeldet. Die Funktion, die ich als SLOT() angegeben habe wird nur einfach nicht ausgeführt... :-(
Antworten