[Qt4] EditKey im TableView ändern
[Qt4] EditKey im TableView ändern
Hallo,
eigentlich sind es 2 Probleme, die aber sich gegenseitig lösen können.
Ich habe ein Objekt von QTableView. Es ist so konfiguriert, dass nur per Mausklick oder über den EditKey eine Zelle in den Edit-Mode gebracht werden kann. Der EditKey ist auf F2 gelegt. Ich möchte aber mit der Enter/Return-Taste in den Edit-Mode. Wie kann ich den EditKey ändern???
Mein Versuch dies zu umgehen, war der Einsatz von keyPressEvent. Komischerweise reagiert der Handler nur beim Drücken der Enter-Taste am Num-Block. Auf die "normale" Enter-Taste reagiert er gar nicht. Als wenn die gar nicht existiert. Ich frage mit einer Switch-Anweisung sowohl Qt::Key_Enter als auch Qt::Key_Return ab. Hat jemand wegen dieses Problems vielleicht einen Tip??
Gruß
Manicboy
eigentlich sind es 2 Probleme, die aber sich gegenseitig lösen können.
Ich habe ein Objekt von QTableView. Es ist so konfiguriert, dass nur per Mausklick oder über den EditKey eine Zelle in den Edit-Mode gebracht werden kann. Der EditKey ist auf F2 gelegt. Ich möchte aber mit der Enter/Return-Taste in den Edit-Mode. Wie kann ich den EditKey ändern???
Mein Versuch dies zu umgehen, war der Einsatz von keyPressEvent. Komischerweise reagiert der Handler nur beim Drücken der Enter-Taste am Num-Block. Auf die "normale" Enter-Taste reagiert er gar nicht. Als wenn die gar nicht existiert. Ich frage mit einer Switch-Anweisung sowohl Qt::Key_Enter als auch Qt::Key_Return ab. Hat jemand wegen dieses Problems vielleicht einen Tip??
Gruß
Manicboy
Zuletzt geändert von Manicboy am 15. November 2005 09:56, insgesamt 1-mal geändert.
--
Who the fuck is general failure and why is he reading my harddisk?
"Intel inside" is not a trademark, it's a warning!!!
Who the fuck is general failure and why is he reading my harddisk?
"Intel inside" is not a trademark, it's a warning!!!
void setEditTriggers(EditTriggers triggers)
Doku: http://doc.trolltech.com/4.0/qabstracti ... ggers-prop
HENNING
Doku: http://doc.trolltech.com/4.0/qabstracti ... ggers-prop
HENNING
mit dieser Funktion kann man nur einstellen, ob auf Doppelklick oder EditKey oder AnyKey etc. reagiert werden soll. Die Taste selbst lässt sich darüber nicht definieren
Manicboy
Manicboy
--
Who the fuck is general failure and why is he reading my harddisk?
"Intel inside" is not a trademark, it's a warning!!!
Who the fuck is general failure and why is he reading my harddisk?
"Intel inside" is not a trademark, it's a warning!!!
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
Re: [Qt4] EditKey im TableView ändern
wie du siehst, frage ich beides ab!Manicboy hat geschrieben:... Ich frage mit einer Switch-Anweisung sowohl Qt::Key_Enter als auch Qt::Key_Return ab. ...
--
Who the fuck is general failure and why is he reading my harddisk?
"Intel inside" is not a trademark, it's a warning!!!
Who the fuck is general failure and why is he reading my harddisk?
"Intel inside" is not a trademark, it's a warning!!!
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
jepp, Version 4.0.1 nutze ich
ein weiterer "lustiger" Effekt mit der Tastenabfrage ist, dass die Pfeiltasten nicht richtig abgefangen werden. Wenn ich in der Tabelle mich mit den Pfeiltasten von Zelle zu Zelle bewege, soll dabei was bestimmtes passieren. Komischerweise passiert es erst dann, wenn ich in einer Zelle am Rand der Tabelle bin und auch erst dann, wenn ich die Pfeiltaste Richtung Rand drücke (so als wenn ich über den Rand will).
ein weiterer "lustiger" Effekt mit der Tastenabfrage ist, dass die Pfeiltasten nicht richtig abgefangen werden. Wenn ich in der Tabelle mich mit den Pfeiltasten von Zelle zu Zelle bewege, soll dabei was bestimmtes passieren. Komischerweise passiert es erst dann, wenn ich in einer Zelle am Rand der Tabelle bin und auch erst dann, wenn ich die Pfeiltaste Richtung Rand drücke (so als wenn ich über den Rand will).
--
Who the fuck is general failure and why is he reading my harddisk?
"Intel inside" is not a trademark, it's a warning!!!
Who the fuck is general failure and why is he reading my harddisk?
"Intel inside" is not a trademark, it's a warning!!!
hier ist er:klogg hat geschrieben:Hmm... dann poste doch mal deinen keyPressed-Handler
Code: Alles auswählen
void MyWidget::keyPressEvent(QKeyEvent *event)
{
switch (event->key())
{
case Qt::Key_Enter:
case Qt::Key_Return:
{
_TableIndex = _Table->currentIndex();
_Table->edit(_TableIndex);
break;
}
case Qt::Key_Left:
case Qt::Key_Up:
case Qt::Key_Right:
case Qt::Key_Down:
{
_TableIndex = _Table->currentIndex();
_Table->selectRow(_TableIndex.row());
break;
}
}
}
--
Who the fuck is general failure and why is he reading my harddisk?
"Intel inside" is not a trademark, it's a warning!!!
Who the fuck is general failure and why is he reading my harddisk?
"Intel inside" is not a trademark, it's a warning!!!
ja, F2 ist weiterhin als EditKey definiert
das Komische ist ja auch, dass bei der Return-Taste (also nicht die am Num-Block) der keyPressEvent-Handler gar nicht erst aufgerufen wird. Ich hab es per Debugger und Haltepunkt festgestellt. Ebenso wird der Handler bei dem Problem mit den Pfeiltasten nicht aufgerufen.
Gibt es da vielleicht ein Attribut für diese Tasten, dass gesetzt werden muss oder so?
das Komische ist ja auch, dass bei der Return-Taste (also nicht die am Num-Block) der keyPressEvent-Handler gar nicht erst aufgerufen wird. Ich hab es per Debugger und Haltepunkt festgestellt. Ebenso wird der Handler bei dem Problem mit den Pfeiltasten nicht aufgerufen.
Gibt es da vielleicht ein Attribut für diese Tasten, dass gesetzt werden muss oder so?
--
Who the fuck is general failure and why is he reading my harddisk?
"Intel inside" is not a trademark, it's a warning!!!
Who the fuck is general failure and why is he reading my harddisk?
"Intel inside" is not a trademark, it's a warning!!!
Aktivieren musste die glaub ich nicht.
Aber die Doku sagt:
Ruf doch in deinen case Anweisungen mal event->accept() auf,
vielleicht klappt's dann...
HENNING
Aber die Doku sagt:
Daher wird F2 nock akzeptiert.A key event contains a special accept flag that indicates whether the receiver will handle the key event. You should call ignore() if the key press or release event is not handled by your widget. A key event is propagated up the parent widget chain until a widget accepts it with accept() or an event filter consumes it. Key events for multimedia keys are ignored by default. You should call accept() if your widget handles those events.
Ruf doch in deinen case Anweisungen mal event->accept() auf,
vielleicht klappt's dann...
HENNING
hmm, geht nicht...aber das könnte daran liegen, dass er bei den genannten Tasten gar nicht erst in den Event-Handler reingeht.
Edit (11:30):
das Problem mit den Pfeiltasten kann man mit dem Event-Handler keyReleaseEvent umgehen.
Aber bei der Enter-Taste gibt es dafür ein anderes Problem. Da kommt man dann nicht mehr aus dem Edit-Mode raus.
Edit (11:30):
das Problem mit den Pfeiltasten kann man mit dem Event-Handler keyReleaseEvent umgehen.
Aber bei der Enter-Taste gibt es dafür ein anderes Problem. Da kommt man dann nicht mehr aus dem Edit-Mode raus.
--
Who the fuck is general failure and why is he reading my harddisk?
"Intel inside" is not a trademark, it's a warning!!!
Who the fuck is general failure and why is he reading my harddisk?
"Intel inside" is not a trademark, it's a warning!!!
[teilweise gelöst] [Qt4] EditKey im TableView ändern
So, nach dem anscheinend keiner etwas weiß, ein kleiner Tip, der das Problem mit dem EditKey zwar nicht direkt löst, es aber umgeht:
eigentlich das Einfachste auf der Welt, nämlich eine neue Klasse erstellen, die von QTableView erbt und dann die keyPressEvent-Funktion überschreiben, so dass auf die Enter/Return-Taste(n) entsprechend reagiert wird. Aber der EditKey ist immer noch F2. Also ist das eher eine halbherzige Lösung.
Gruß
Manicboy
eigentlich das Einfachste auf der Welt, nämlich eine neue Klasse erstellen, die von QTableView erbt und dann die keyPressEvent-Funktion überschreiben, so dass auf die Enter/Return-Taste(n) entsprechend reagiert wird. Aber der EditKey ist immer noch F2. Also ist das eher eine halbherzige Lösung.
Gruß
Manicboy
--
Who the fuck is general failure and why is he reading my harddisk?
"Intel inside" is not a trademark, it's a warning!!!
Who the fuck is general failure and why is he reading my harddisk?
"Intel inside" is not a trademark, it's a warning!!!