Seite 1 von 1

setText als slot bei QLineEdit

Verfasst: 20. Dezember 2008 11:29
von michibr
Hallo!
Ich bin noch relativ neu in Qt.
Für den Einstieg möchte ich mir ein einfaches Backup-Programm schreiben.
Ich wollte das Ergebnis aus einem Dateiauswahl-Dialog in eine QLineEdit schreiben.
beim Versuch von

connect(showdir, SIGNAL(clicked()), line, SLOT(setText()));

erhalte ich erst beim Ausführen des Programms folgende Fehlermeldung:

Object::connect: No such slot QLineEdit::setText()

Ich verstehe das nicht, da setText in der Dokumentation ja als slot angegeben ist.
Weiß hier jemand Rat und kann mir sagen, wo mein Fehler liegt?

Vielen Dank schon mal + Grüße Michael

Re: setText als slot bei QLineEdit

Verfasst: 20. Dezember 2008 11:37
von solarix
michibr hat geschrieben:Hallo!
Object::connect: No such slot QLineEdit::setText()

Ich verstehe das nicht, da setText in der Dokumentation ja als slot angegeben ist.
Also in der Doku die _ich_ angeschaut habe, existiert kein Slot "setText()", sondern ein Slot "setText(const QString&)"..

Verfasst: 20. Dezember 2008 13:09
von michibr
Ja, sorry. Mein Code lautet

Code: Alles auswählen

connect(showdir, SIGNAL(clicked()), line, SLOT(setText("Eingabe")));
hier erhalte ich ebenfalls die gleiche Fehlermeldung:

Object::connect: No such slot QLineEdit::setText("Eingabe")
oder gehe ich komplett falsch an die Sache heran?

Verfasst: 20. Dezember 2008 13:32
von solarix
Object::connect: No such slot QLineEdit::setText("Eingabe")
Das stimmt ebenfalls wieder... Ich sehe in der Doku auch keinen Slot 'setText("Eingabe")', sondern (immer noch) 'setText(const QString&)'... :wink:

Verfasst: 20. Dezember 2008 13:41
von michibr
Das ist richtig. Aber ich will eben string für const QString& einsetzen.
In der Methode, also:

Code: Alles auswählen

line->setText("Eingabe");
funktioniert das einwandfrei, nur eben nicht beim slot.
Wie muss ich das hier machen?

Verfasst: 20. Dezember 2008 13:44
von solarix
Ich wollte dich eigentlich darauf stossen, dass man Signals/Slots nur mit den in der Doku angegebenen Prototpyen verwenden darf und der Prototyp des Signals mit dem des Slots übereinstimmen muss!

Mit anderen Worten: du musst einen eigenen Slot implementieren welcher du dann mit clicked() connecten kannst.. und in diesem Slot kannst du dann setText(....whatever...) aufrufen...

Verfasst: 20. Dezember 2008 14:27
von michibr
Ok...
entschuldige das habe ich nicht erkannt.
Ich bin wie gesagt noch neu -> :?: <-
Aber danke für die Hilfe ...