[gelöst] Problem beim Hinzufügen eines weiteren Signal-Slots

Verschiedenes zu Qt
Antworten
macpret
Beiträge: 28
Registriert: 25. September 2007 01:58

[gelöst] Problem beim Hinzufügen eines weiteren Signal-Slots

Beitrag von macpret »

Hallo,

Ich habe mit meiner Studienarbeit angefangen QT für die Gestalltung von grafischen Oberflächen zu beginnen.
Hierzu verwende ich QT 4 mit Visual Studio Professional Edition.

Bis dato lief es auch mehr oder minder reibungslos. Habe auf einer Oberfläche mehrere weitere Oberflächen verlinkt, rufe mit verschiedensten Buttons verschiedenste andere Methoden (Slots) auf.

Nun wollte ich in dem Hauptfenster, welches sich direkt zu Beginn auftut noch einen neuen Button hinzufügen, mit welchen ich die Verbindung zum GPS-Modem aufbauen und trennen kann.
Die Klasse des Hauptfensters heißt MainWindow und liegt in den Dateien Window1.h und cpp.

In der Window1.h habe ich wie bei den anderen Slots auch
"void GPSSlot();" unter den "puplic slots:" eingebungen.
In der Window1.cpp ist ziemlich weit unten die Slot-Methode implementiert durch:
MainWindow::void GPSSlot()
{
... // Hier steht natürlich etwas mehr
}

und schließlich im Konstruktor der MainWindow steht neben den vielen anderen:
connect(pushButton_GPS, SIGNAL(clicked()), this, SLOT(GPSSlot()));

Ich kann es ohne Fehler kompilieren, jedoch steht dann direkt in der Kommando-Zeile folgender Fehler, welchen ich sonst lediglich kannte, wenn ich mich irgendwo beim Namen mal vertippt hatte (dieses Mal sind die Dateinamen allerdings kopiert!!!)

Object::connect: No such slot MainWindow::GPSSlot()
Object::connect: (sender name: 'm_action_GPS')
Object::connect: (receiver name: 'MainWindow')

Woran kann es liegen, dass er diesen Slot nun plötzlich nicht kennt?

In der moc_Window1.cpp ist dieser Slot leider unter:

int MainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a)

nicht aufgeführt. Es liegt doch nicht daran, dass 26 Slots pro Fenster das Maximum darstellen, oder?

Wäre um Hilfe wirklich dankbar.

Gruß
Mac
Zuletzt geändert von macpret am 25. September 2007 13:11, insgesamt 1-mal geändert.
I divided by NULL - Buuuuuh ;-)
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Re: Problem beim Hinzufügen eines weiteren Signal-Slots

Beitrag von macman »

macpret hat geschrieben:connect(pushButton_GPS, SIGNAL(clicked()), this, SLOT(GPSSlot()));
Hier steht pushButton.
macpret hat geschrieben:Object::connect: No such slot MainWindow::GPSSlot()
Object::connect: (sender name: 'm_action_GPS')
Object::connect: (receiver name: 'MainWindow')
Und hier m_action_GPS. Die Fehlermeldung bezieht sich also nicht auf die Connection. Kann es sein das es da noch eine in einer anderen Klasse gibt?

Im übrigen heißt es Qt. Mit QT verbinde ich immer QuickTime.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
macpret
Beiträge: 28
Registriert: 25. September 2007 01:58

Beitrag von macpret »

Ähm, das liegt daran, dass ich einen Button und ein Menü-Dingens mit dem Slot verbunden habe und in dem, was ich da abgetippt habe, hatte ich den Button auskommentiert.

ansonsten habe ich halt :

Object::connect: No such slot MainWindow::GPSSlot()
Object::connect: (sender name: 'm_action_GPS')
Object::connect: (receiver name: 'MainWindow')

und:

Object::connect: No such slot MainWindow::GPSSlot()
Object::connect: (sender name: 'pushButton_GPS')
Object::connect: (receiver name: 'MainWindow')

dort stehen.

Also das Problem besteht weiterhin.. Allerdings dennoch schonmals vielen Dank für das gewitze Auge :-)

Und ja.. natürlich: Qt :-)

Gruß
Mac
I divided by NULL - Buuuuuh ;-)
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Tja, dann sehe ich so keinen Fehler. Manchmal hilft ein komplett neu compilieren, ansonsten müsste mehr her.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
macpret
Beiträge: 28
Registriert: 25. September 2007 01:58

Beitrag von macpret »

Merkwürdiger Weise tritt dieser Fehler ebenso auf, wenn ich versuche nachträglich eine Slots umzubenennen.

Daher habe ich habe ich vorhin nochmals alles durchgesehen und festgestellt, dass die MOC-Einstellungen nicht mehr vorhanden waren. Somit hat er also beim Umbenennen eines Slots bzw. beim erstellen eines neuen Slots die Veränderungen einfach nicht mehr in die moc_Window1.cpp geschrieben.

Nachdem er dies nun wieder tut funktionierts auch wieder prächtig.

Also was lernt man daraus? - Kaum macht man's richtig, schon funktionierts ^^

Dennoch vielen Dank für die Hilfe :-)
I divided by NULL - Buuuuuh ;-)
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Hab mich nicht getraut das zu schreiben, dachte das passiert nur mir :-) Ein bisschen mache ich aber auch VS verantwortlich. Das scheint manchmal Einstellungen zu vergessen.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
DarkWotan
Beiträge: 65
Registriert: 18. Mai 2006 10:03

Beitrag von DarkWotan »

Was mich dennoch ein wenig irritiert ist:

Code: Alles auswählen

MainWindow::void GPSSlot() 
{ 
... // Hier steht natürlich etwas mehr 
}
Hast du es wirklich so da hingeschrieben?
Ich denke nicht, dass der Compiler einen eigens innerhalb des Namensraums MainWindow definierten Datentyp 'void' durchgehen lässt.

MfG, Cedric
Antworten