Seite 1 von 1

Problem mit QObject::connect();

Verfasst: 24. Mai 2010 17:31
von sudo rm -rf
Hallo,
ich hab seit längerem nicht mehr mit QT gearbeitet und habe momentan ein Problem mit QObject::connect();
Beim Compilieren tritt kein Fehler auf, aber zur Laufzeit bekomme ich in der Konsole folgendes ausgegeben:

Code: Alles auswählen

Object::connect: No such signal QLineEdit::textChanged(pfad_e->text())
Object::connect: No such signal QLineEdit::textChanged(passwort_e->text())
Object::connect: No such slot gui::quit()
Folgende Situation:
ich habe 2 lineEdit-felder pfad_e und passwort_e
wenn sich der Inhalt ändert sollen die Slots pfad_pruefen() oder passwort_pruefen() ausgeführt werden und der Inhalt des jeweiligen lineedit-feldes übergeben werden (lineedit->text())

Wenn man auf den PushButton abbrechen_b clicjt, soll die Anwendung geschlossen werden

QObject::connect (steht in der gui.cpp):

Code: Alles auswählen

	QObject::connect(pfad_e, SIGNAL(textChanged(pfad_e->text())), this, SLOT(pfad_pruefen(QString text)));
	QObject::connect(passwort_e, SIGNAL(textChanged(passwort_e->text())), this, SLOT(passwort_pruefen(QString text)));
	QObject::connect(ok_b, SIGNAL(clicked()), this, SLOT(ausfuehren()));
	QObject::connect(abbrechen_b, SIGNAL(clicked()), this, SLOT(quit()));
ich weiß nicht, was ich für das "this" einsetzen soll, hab schon einiges probiert, komme aber nicht weiter...

in der main steht folgendes:

Code: Alles auswählen

#include "gui.h"

int main(int argc, char *argv[])
{
	QApplication app(argc, argv);
	gui fenster;
	fenster.show();
	return app.exec();
}
Für jede Hilfe sage ich jetzt schon mal danke!!!

Verfasst: 24. Mai 2010 17:57
von Chris81T
Das kann auch so nicht gehen.

Als Nachschlagewerk schau doch mal bitte hier:
http://doc.trolltech.com/4.6/signalsand ... ml#signals

Hier ein kleines Beispiel:

Code: Alles auswählen

connect(obj1, SIGNAL(sendSomeText(const QString &)), lineEdit, SLOT(setText(const QString &)));

...

in ner Klassen- Funktion von obj:

emit sendSomeText("someText");
Durch das emit wird das eigene Signal versendet.


Hoffe es hilft. Mir rennt die Zeit davon...

Verfasst: 24. Mai 2010 18:14
von sudo rm -rf
mhh...
du scheinst mich nicht richtig verstanden zu haben.
mein sender ist ein linedit
der dass signal textChanged mit dem text sendet
an keine ahnung welchen reciever
der wiederum den public slot pfad_pruefen() aufruft

Verfasst: 24. Mai 2010 18:29
von CLRS530
Das hat er sehr wohl. Du hast nur irgend etwas vollkommen missverstanden.

Ein connect sieht nicht so aus

Code: Alles auswählen

connect(pfad_e, SIGNAL(textChanged(pfad_e->text())), this, SLOT(pfad_pruefen(QString text)));
sonder so

Code: Alles auswählen

connect(pfad_e, SIGNAL(textChanged(QString)), this, SLOT(pfad_pruefen(QString)));
Wenn das Signal von QLineEdit kommt, kümmert sich das auch um den Inhalt. Da musst du doch nichts mehr machen.

Verfasst: 24. Mai 2010 18:39
von sudo rm -rf
ahh, ok, vielen dank!!!

Verfasst: 24. Mai 2010 18:53
von Chris81T
Eben hatte ich keine Zeit mehr gehabt, wollte aber das schon Geschriebene nicht verwerfen. Aber CLRS530 hat dir ja weitergeholfen, bzw. mich komplettiert.

Also es ist dir somit geholfen, von daher weiterhin viel Erfolg.

Verfasst: 24. Mai 2010 19:04
von sudo rm -rf
danke nochmal,
mein programm läuft!!!
jetzt muss ich nur noch den fileopendialog einbauen!
*happy*