Problem mit QObject::connect();

Alles rund um die Programmierung mit Qt
Antworten
sudo rm -rf
Beiträge: 28
Registriert: 23. Dezember 2009 13:16

Problem mit QObject::connect();

Beitrag 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!!!
Chris81T
Beiträge: 82
Registriert: 4. Mai 2008 00:06
Wohnort: Urbar

Beitrag 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...
sudo rm -rf
Beiträge: 28
Registriert: 23. Dezember 2009 13:16

Beitrag 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
CLRS530
Beiträge: 155
Registriert: 8. Oktober 2007 18:00

Beitrag 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.
sudo rm -rf
Beiträge: 28
Registriert: 23. Dezember 2009 13:16

Beitrag von sudo rm -rf »

ahh, ok, vielen dank!!!
Chris81T
Beiträge: 82
Registriert: 4. Mai 2008 00:06
Wohnort: Urbar

Beitrag 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.
sudo rm -rf
Beiträge: 28
Registriert: 23. Dezember 2009 13:16

Beitrag von sudo rm -rf »

danke nochmal,
mein programm läuft!!!
jetzt muss ich nur noch den fileopendialog einbauen!
*happy*
Antworten