Moin da draussen, Ich schreibe gerade mit Qt ein Programm wo ich ein QTableWidget nutze und ein Signal bekommen moechte wenn ich mit den Fingern auf eines der Felder rumtatsche. Das Widget unterstuetzt auch einige Signale, aber ich bekomme keines egal was ich da probiere. Gibt es da einen signifakten Unterschied zu Android und dem Rest der Welt weil man mit dem Finger schlechter zwischen touchen, klicken und doppelklicken unterscheiden kann? Oder bin ich nur zu bloed? Ich habe das hier mit den unterschiedlichsten Signalen durchprobiert, aber meine slotfunktion wird einfach nicht aufgerufen. connect(ui->Table_Pass,SIGNAL(clicked()),this, SLOT(TableClicket( ))); connect(ui->Table_Pass,SIGNAL(itemPressed(QTableWidgetItem)),this, SLOT(TableItemEnter( QTableWidgetItem))); Olaf
Olaf schrieb: > Gibt es da einen signifakten Unterschied zu Android und dem Rest der > Welt Einen Unterschied von was "zu Android und dem Rest der Welt"? > weil man mit dem Finger schlechter zwischen touchen, klicken und > doppelklicken unterscheiden kann? Oder bin ich nur zu bloed? Hast du denn überhaupt einen Touchscreen? ;-) > Ich habe das hier mit den unterschiedlichsten Signalen durchprobiert, > aber meine slotfunktion wird einfach nicht aufgerufen. > > connect(ui->Table_Pass,SIGNAL(clicked()),this, SLOT(TableClicket( ))); Die wird vermutlich nur aufgerufen, wenn du auf eine Stelle des Widgets klickst, wo keine Zelle oder irgendwas anderes clickbares ist. > connect(ui->Table_Pass,SIGNAL(itemPressed(QTableWidgetItem)),this, > SLOT(TableItemEnter( QTableWidgetItem))); Die Angabe ist falsch. Der Parameter ist kein QTableWidgetItem, sondern ein Zeiger darauf, also QTableWidgetItem*. Da hätte das Programm beim Ausführen eigentlich eine Fehlermeldung ausgeben müssen, dass das angegebene Signal nicht existiert. Besser ist es aber, gleich die neuere Version von connect zu verwenden (gibt's seit Qt5), die direkt mit Memberfunktions-Zeigern arbeitet. Die hat den Vorteil, dass du den Fehler schon zur Compilezeit bekommst.
1 | connect(ui->Table_Pass, &QTableWidget::itemPressed, this, &Irgendwas::TableItemEnter); |
Irgendwas muss dann noch durch den Namen deiner Klasse ersetzt werden.
> Hast du denn überhaupt einen Touchscreen? ;-) Doch doch...ich hab krass mobiles Fon ohne Tastatur1 > Der Parameter ist kein QTableWidgetItem, sondern > ein Zeiger darauf, also QTableWidgetItem*. Du hast recht! Daran lag es und jetzt funktioniert es. Ich hatte das zuerst auch richtig als Zeiger, aber irgendwann hab ich wohl mal zwei Dinge gleichzeitig geaendert/getestet. > Besser ist es aber, gleich die neuere Version von connect zu verwenden > (gibt's seit Qt5), Ach..schon wieder was neues? Seufz. Ich hab da gestern erstmalig von gelesen und wollte nicht gleich mit etwas ganz neuem rumzaubern. Mal schauen... olaf
Olaf schrieb: >> Besser ist es aber, gleich die neuere Version von connect zu verwenden >> (gibt's seit Qt5), > > Ach..schon wieder was neues? Seufz. Ich hab da gestern erstmalig von > gelesen und wollte nicht gleich mit etwas ganz neuem rumzaubern. Mal > schauen... Naja, so neu ist das auch nicht. Wurde wie gesagt mit Qt5 eingeführt - vor über 6 Jahren.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.