Seite 1 von 1

SIGNAL-SLOT-Problem

Verfasst: 20. Oktober 2007 15:35
von B-Barth
Hallo.

Ich habe ein Problem mit dem connect-Befehl. Habe im zugehörigen Header den privat SLOT

Code: Alles auswählen

QString imgContrast(QString prev_wtext);
angelegt. Nun wollte ich meine QAction "contrastAct" mittels connect verbinden. Das sieht bei mir dann so aus:

Code: Alles auswählen

connect(contrastAct, SIGNAL(triggered()), this, SLOT(imgContrast(QString)));
Beim Ausführen bekomme ich immer die Meldung "QObject::connect: Incompatible sender/receiver arguments QAction(triggered()) --> MainWindow::imgContrast(QString)". Ohne ein Funktionsargument für imgContrast funktioniert alles; das ist aber leider keine Lösung.

Ich bin mir sicher, ich habe irgendwas übersehen/falsch gemacht. Nur was?

Verfasst: 20. Oktober 2007 15:40
von Christian81
tirggered() hat nunmal keine Parameter - wie soll imgContrast() dann ein Parameter übergeben werden??

Verfasst: 20. Oktober 2007 15:43
von B-Barth
Ok, klingt logisch. Und was soll ich dann anstelle von SIGNAL(triggered()) als zweites Argument von connect einfügen, damit meine Funktion den QString bekommt?

Verfasst: 20. Oktober 2007 16:07
von Christian81
Erstmal solltest Du dir überlegen was für ein String überhaupt übergeben werden soll... ich mein er kann sich ja nicht jedesmal einen aussuchen !?

Verfasst: 20. Oktober 2007 16:10
von B-Barth
Hab jetzt in Anlehnung an Wikipedia mein eigenes Signal geschrieben:

Code: Alles auswählen

signals:
void wtextChanged(QString new_wtext);
Mein neuer connect-Befehl sieht dann so aus:

Code: Alles auswählen

connect(contrastAct, SIGNAL(wtextChanged(QString), this, SLOT(imgContrast(QString)));
Funktionieren tut es leider immer noch nicht. Jetzt bekomme ich die Meldung: "No such signal QAction::wtextChanged(QString)".

Mir fällt allerdings auch nicht neues mehr ein. Kann mir jemand hilfreich unter die Arme greifen? Vielen Dank im Voraus.

Verfasst: 20. Oktober 2007 16:45
von Christian81
Da Du nicht im Ansatz sagst was Du überhaupt willst und imho auch keine Tutorials durchgelesen hast (http://doc.trolltech.com/4.3/signalsandslots.html) ist meine Anwort: nein!