done()-Slot wird nicht erkannt

Alles rund um die Programmierung mit Qt
Antworten
pucky
Beiträge: 9
Registriert: 29. April 2008 23:05

done()-Slot wird nicht erkannt

Beitrag von pucky »

Hallo zusammen,
ich habe ein kleines Problem. Und zwar habe ich gerade einen modalen Dialog erstellt und wollte ihn mit dem done()-Signal beenden. Der Konstruktor für diese Klasse sieht etwa so aus (schwer vereinfacht):

Code: Alles auswählen

SendWriteRegister::SendWriteRegister(QWidget *parent, int count)
    : QDialog(parent)
{
....
....
setLayout(mainLayout);

	connect(submit, SIGNAL(clicked()), this, SLOT(ReadOut()));
	connect(submit, SIGNAL(clicked()), this, SLOT(done(i)));
}
Aber ich bekomme zur Laufzeit die Fehlermeldung
Object::connect: No such slot SendWriteRegister::done(i)
In der Doku steht done() als virtual slot, also habe ich den slot selbst in meiner Klasse implemtiert, bekomme aber immer noch den gleichen Fehler.

Deshalb die Frage: was habe ich falsch verstanden oder nicht beachtet?

Gruss Pucky
pm_Snake
Beiträge: 86
Registriert: 7. September 2004 11:33

Beitrag von pm_Snake »

du versuchst dem slot einen parameter mit zu geben ( i ).
das geht natürlich nicht, wenn er parameterlos deklariert ist.
>>[-]>[-]>[-]>[-]<<<<<[->>+<-[>>>]>[[<+>-]>+>>]<<<<<]
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Re: done()-Slot wird nicht erkannt

Beitrag von pfid »

pucky hat geschrieben:Hallo zusammen,
ich habe ein kleines Problem. Und zwar habe ich gerade einen modalen Dialog erstellt und wollte ihn mit dem done()-Signal beenden. Der Konstruktor für diese Klasse sieht etwa so aus (schwer vereinfacht):

Code: Alles auswählen

SendWriteRegister::SendWriteRegister(QWidget *parent, int count)
    : QDialog(parent)
{
....
....
setLayout(mainLayout);

	connect(submit, SIGNAL(clicked()), this, SLOT(ReadOut()));
	connect(submit, SIGNAL(clicked()), this, SLOT(done(i)));
}
Aber ich bekomme zur Laufzeit die Fehlermeldung
Object::connect: No such slot SendWriteRegister::done(i)
In der Doku steht done() als virtual slot, also habe ich den slot selbst in meiner Klasse implemtiert, bekomme aber immer noch den gleichen Fehler.

Deshalb die Frage: was habe ich falsch verstanden oder nicht beachtet?

Gruss Pucky
Signal und Slot müssen die gleichen Parameter haben.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

pm_Snake hat geschrieben:du versuchst dem slot einen parameter mit zu geben ( i ).
das geht natürlich nicht, wenn er parameterlos deklariert ist.
Nicht nur das. Er versucht einen Wert zu übergeben in dem connect. Ich nehm nämlich nicht an dass er irgendwo eine Klasse/typedef/enum/... namens "i" rumliegen hat.
pucky
Beiträge: 9
Registriert: 29. April 2008 23:05

Beitrag von pucky »

Naja, ich habe es auf jeden Fall auch mal ohne Parameter probiert.
In der Doku steht aber daß ein Parameter zu übergeben ist:
http://doc.trolltech.com/4.5/qdialog.html#done

Gruss pucky
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
androphinx
Beiträge: 170
Registriert: 26. Januar 2009 09:19
Wohnort: 127.0.0.2

Beitrag von androphinx »

ich würde mal denken, dass er schlicht und einfach mal wieder einen der standartfehler, die mit signals und slots in qt passieren, gemacht hat.
1. Du hast in deiner Klasse das kleine Q_OBJECT vergessen?
oder
2. Du hast den slot als normale funktion implementiert, und nicht als slot:

Code: Alles auswählen

protected slots:
  void einslot (void);
  void zweislot (int);
Mfg androphinx
Antworten