Zum Inhalt springen

C++/Qt: slots nich gefunden


Nexx

Empfohlene Beiträge

Sers Leutz,

Ich erstelle zur Zeit in kleines Progrämmchen, in dem ich zur Laufzeit Menüs und Labels ... erstelle. Um diese jetzt mit Proceduren zu verbinden, habe ich ACTIONS erstellt und diese mit CONNECT an die Proceduren gebunden.

Beim Compilieren läuft alles glatt, nur wenn das Programm startet und versucht, die Menues und den Rest zu initialisieren, dann bringt er mir für jeden CONNECT-Befehl eine Fehlermeldung:

QObject::connect: No such slot Form1::gld_activated()

QObject::connect: (sender name: "gld")

QObject::connect: (receiver name: "form1")

Form1 ist das QMainWindow das ich öffne und das Menu enthält. "gld" ist der Name des Menu-Punktes.

Diese Meldung bringt er mir für jeden Menu-Punkt, den ich im Menu eingebaut habe, also für jeden CONNECT_Befehl, den ich im Source-Code eingebaut habe.

Ich arbeite hier mit SUSE Linux 8.0 und dem GNU-Compiler.

Bitte Helft mir weiter!!!!

cu

Nexx

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also pass auf:

Ich habe eine Klasse definiert fuer ein ganz normales QMainWindow, habe darin mit

public slots:

void gld_activated();

. . . .

die Slots deklariert.

In einer *.cpp File habe ich dann die Header-Datei eindebunden, in der die Klasse Form1 definiert wird. Hier stehen auch die Slots drinnen, in der Form:

void Form1::gld_activated()

{

....

}

In der selben cpp-File habe ich den Konstruktor fuer Form1 genauer definiert, in der Header steht nur der Prototyp.

In diesem Konstruktor erstelle ich das Menu waehrend der Laufzeit, und xwar wie folgt:

QAction *gldaction;

gldaction=new QAction("GLD","Gld Menu",0,this,"gld");

connect(gldaction,SIGNAL(activated()),this,SLOT(gld_activated()));

Und der Rest von der Menuerzeugung sieht wie folgt aus:

QPopupMenu *gldmenu;

gldmenu=new QPopupMenu(this);

menuBar()->insertItem("Gld-Menu",gldmenu);

gldaction->addTo(gldmenu);

Das wars.

Der Compiler meldet keinen Fehler, also kanns an der Deklaration theoretisch nicht liegen, oder?

Erst wenn das Programm fertig compiliert ist, und gestartet wird, meldet mir das Programm weahrend der Laufzeit eben die Meldung, die ich dir schon gegeben habe.

Die Menus sind deshalb auch ausser Funktion, er weiss ja nicht, wo er die Slots findet.

Bei uns stehen alle vor einem Raetsel, wobei sich eigentlich keiner so richtig mit Qt auskennt. Qt wird erst bei uns eingefuehrt, unser Ausbildungsleiter geht auch erst naechste Woche auf Lehrgang. Ich hab also die Hilfe dringend noetig, sonst haengt das Projekt 'ne Woche in der Luft. Danke fuer dein Bemuehen,

cu,

Nexx

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich hab den moc gerade gefunden, und hab "moc form1.h" eingegeben, woraufhin er mir auf der shell mehrere Routinen ausspuckt, aber an der Header selbst nichts aendert.

Unter diesen Routinen befindet sich auch eine, in welcher er meine Slots nochmal definiert, aber er speichert halt nichts ab.

Benutzerfehler? Wie wende ich den moc sonst an?

Im QT-Benutzerhandbuch steht zwar was drinnen ueber tmake und nmake fuer solche faelle, aber in unserem qt-verzeichnis ist nichts dergleichen zu finden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Genau kenne ich mich mit Qt auch nicht aus, was ich Dir hier sage, habe ich mir zusammengegoogelt ;).

Jedenfalls scheint moc eine cpp-Datei zu generieren, die Du dann wohl mitkompilieren musst:

moc -o abx_moc.cpp abc.h

Hier habe ich einige Infos dazu gefunden:

http://vrlab.epfl.ch/~bhbn/qt_presentation/presentation.html#SECTION00041000000000000000

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dank dir nochmal, hab sowas aehnliches schon ausprobiert. Unter www.trolltech.com gibts auch Infos zu diesem Thema. Hat aber beides nicht hingehauen. sobald ich dann die .moc oder die .cpp Datei, die ich mit moc erstellt habe einbindet, meldet mir der Compiler, dass die Routinen schon in einer .obj Datei vorhanden waeren, die sowieso schon mit eingebunden wird. Warum dann das Programm die Slots trotzdem nicht findet, weiss ich nicht.

Danke nochmals fuer deine Hilfe, cu,

Nexx

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...