Seite 1 von 1

Problem mit SLOT eines QTableWidget

Verfasst: 14. Januar 2007 15:01
von C_G
Moin.
Ich habe eine Instanz eines QTableWidget erzeugt und möchte nun
via QPushButton eine Zeile der Tabelle hinzufügen. Die Verbindung
sieht wie folgt aus:

Code: Alles auswählen

QObject::connect(eingabe, SIGNAL(clicked()), tabelle, SLOT(insertRow(0)));
Normalerweise müsste jetzt beim klicken des Buttons "eingabe" eine
Reihe zu der tabelle "tabelle" hinzugefügt werden. Allerdings bekomme
ich zum Programmstart in der Konsole folgendes angezeigt:
  • No such slot QTableWidget::insertRow(0)
In der QT-Doku steht der Slot aber genau so drinn.
Was mach ich falsch?
Gruß,
Christian

Verfasst: 14. Januar 2007 17:51
von Christian81
Mal wieder dder Standardfehler - in einem conenct kann man keine Parameter übergeben. Und die Signatur von signal und slot müssen gleich sein ->

Code: Alles auswählen

QObject::connect(eingabe, SIGNAL(clicked()), tabelle, SLOT(insertRow()));

Verfasst: 14. Januar 2007 18:03
von upsala
Blos so nebenbei: Der Slot darf auch weniger Parameter haben, als das Signal...

Verfasst: 14. Januar 2007 18:13
von Christian81
upsala hat geschrieben:Blos so nebenbei: Der Slot darf auch weniger Parameter haben, als das Signal...
Das ist schon klar - aber mit sowas verwirrt man Anfänger imho nur :)

Verfasst: 14. Januar 2007 22:38
von C_G
Und wieso steht dann in der Doku das an eine integervariable
übergeben kann?
Ich habe es jetzt ohne Parameterübergabe probiert. Leider
ohne Erfolg. Die selbe Fehlermeldung. Den Slot gibt es doch
so, oder liege ich da schon falsch?

Verfasst: 15. Januar 2007 06:30
von Christian81
Die Signatur von Signal und Slot müssen gleich sein. Also kannst du diesen Slot so nicht verwenden.

Verfasst: 15. Januar 2007 16:31
von upsala
Wo steht das in der Doku?

Verfasst: 15. Januar 2007 16:37
von Christian81
upsala hat geschrieben:Wo steht das in der Doku?
Was ? Das man keine Parameter mit übergeben kann? Das ist doch wohl klar wenn man weiss was dahinter steckt und für alle anderen ist es eben einfach so bzw. es steht auch in der Doku:

Code: Alles auswählen

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.)

Verfasst: 15. Januar 2007 16:43
von upsala
Danke Christian, ich kenn die Doku. Ich meinte C_G:
Und wieso steht dann in der Doku das an eine integervariable
übergeben kann?

Verfasst: 15. Januar 2007 18:36
von C_G
Sorry. Denkfehler. Ich habe den Slot einfach als Funktion in einem anderen
Slot aufgerufen. Wusste nicht das sowas geht. Hab ich gestern nacht erst
noch gelesen.
Gruß,
Christian

[Thema erledigt]