Seite 1 von 1

Werte an Slot übergeben

Verfasst: 12. November 2007 22:35
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

Verfasst: 12. November 2007 22:43
von dhcase

Verfasst: 13. November 2007 10:21
von t0bias
danke, aber das Doc von Trolltech hab ich schon gelesen, darin aber die Antwort auf meine Frage nicht gefunden..?

Verfasst: 13. November 2007 10:33
von Christian81
Dann benutze die Foren-Suche und lerne Englisch. Es ist so nicht möglich.

Verfasst: 13. November 2007 10:39
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

Verfasst: 13. November 2007 11:04
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

Verfasst: 13. November 2007 11:13
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.

Verfasst: 13. November 2007 11:19
von t0bias
gut, danke