Werte an Slot übergeben

Alles rund um die Programmierung mit Qt
Antworten
t0bias
Beiträge: 46
Registriert: 12. November 2007 21:11

Werte an Slot übergeben

Beitrag von t0bias »

Hi,

ich habe einem Button einen eigenen Slot zugewiesen.
Wenn ich den Slot ohne Parameter oder Werte angebe, funktioniert
das ganze problemlos, aber sobald ich einen Wert angebe, erhalte
ich

Code: Alles auswählen

QObject::connect: No such slot CustomWidget::check(100)
.
was mache ich da falsch?

hier mein cpp:

Code: Alles auswählen

class CustomWidget : public QWidget
{
Q_OBJECT
public:
     CustomWidget( QWidget *parent=0, const char *name=0 );
public slots:
     void check( int a );
};

CustomWidget::CustomWidget( QWidget *parent, const char *name )
        : QWidget ( parent, name )
{
     setMaximumSize(260, 140);
     setMinimumSize(260, 140);
}


int main(int argc, char *argv[])
{

--- snip ---

     QPushButton ok("Ok", &window);
     ok.setFont(QFont("Sans", 10, QFont::Normal));
     ok.setGeometry(170, 100, 80, 30);
     ok.setAutoDefault(false);
     QObject::connect(&ok, SIGNAL(clicked()), &window, SLOT(checkPWD( 100 )));


--- snip ---

}


void CustomWidget::check( int a ) {
        std::cout<<a;
}

#include "main.moc"
danke und gruss

tobi
dhcase
Beiträge: 132
Registriert: 10. Juni 2006 20:38

Beitrag von dhcase »

t0bias
Beiträge: 46
Registriert: 12. November 2007 21:11

Beitrag von t0bias »

danke, aber das Doc von Trolltech hab ich schon gelesen, darin aber die Antwort auf meine Frage nicht gefunden..?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Dann benutze die Foren-Suche und lerne Englisch. Es ist so nicht möglich.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
t0bias
Beiträge: 46
Registriert: 12. November 2007 21:11

Beitrag von t0bias »

suche ja schon eine ganze weile und englisch lernen geht nun mal nicht so zügig. aber wieso so aggresiv? foren sind doch da, dass einem geholfen werden kann oder?
gut, jetzt weiss ich dass das so nicht geht, aber wieso?

lg
Korgen
Beiträge: 42
Registriert: 28. März 2006 16:37

Beitrag von Korgen »

ok, ich versuch's mal:


1.Du kannst beim Connect keine Werte übergeben, sondern nur die Typen, der zu übergebenen Werte.

also müsste es schonmal heißen:

QObject::connect(&ok, SIGNAL(clicked()), &window, SLOT(checkPWD( int )));

2.ABER aus der Doku:

The signature of a signal must match the signature of the receiving slot. (In fact a slot may have a shorter signature than the signal it receives because it can ignore extra arguments.)

d.h. dein Slot kann nur maximal soviele Argumente bekommen wie das Signal sendet, in deinem Fall also gar keine.

Mein Vorschlag:
ein eigenes Signal definieren, dann das clicked Signal des Buttons auf einen Slot onButtonClicked() connecten und in diesem dann dein Eigenes Signal emitten ( emit mySignal(100) );

Grüße
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

t0bias hat geschrieben:aber wieso so aggresiv?
Weil die Frage jede Woche kommt und beweist das die Doku nicht gelesen wurde und die Forumsuche wohl auch zu komplex ist.
t0bias hat geschrieben:foren sind doch da, dass einem geholfen werden kann oder?
Dieses Forum dient in erster Linie der Hilfe zur Selbsthilfe. Die Qt-Doku ist sehr gut und ausführlich und englisch ist quasi ein Muss, egal in welcher Sprache man programmiert.

Die eigentliche Frage hat Korgen ja schon beantwortet.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
t0bias
Beiträge: 46
Registriert: 12. November 2007 21:11

Beitrag von t0bias »

gut, danke
Antworten