QTablewidget: Suche Signal wie columnSelect
QTablewidget: Suche Signal wie columnSelect
Hallo zusammen.
Ich habe ein QTablewidget. Bei diesem habe ich selectionMode auf SingleSelection und selectionBehavior auf SelectColumns.
Nun sollen die Spalten nur selektiert werden können, wenn ein Doppelklick ausgeführt wird nicht aber bei einem einfachen Kilck.
Deswegen habe ich editTriggers auf NoEditTriggers gesetzt und einen Eventfilter für den viewport meines TableWidgets installiert.
In diesem fange ich QEvent::MouseButtonPress ab (werte es anderweitig aus) beende die Funktion mit true und unterdrücke so die Selektierbarkeit einer Spalte mit einem Klick.
Nun zum eigentlichen Problem: Wenn nun eine Spalte (durch einen Doppelklick) selektiert wird (die Spalte ist dann grau hinterlegt), möchte ich darüber informiert werden um dann entsprechend reagieren zu können.
Ich habe mir die Signale von QTableWindget und dem dazugehörigen horzontalHeader angeschaut aber Nichts gefunden...
Wie kann ich das erreichen?
Vielen Dank
Ich habe ein QTablewidget. Bei diesem habe ich selectionMode auf SingleSelection und selectionBehavior auf SelectColumns.
Nun sollen die Spalten nur selektiert werden können, wenn ein Doppelklick ausgeführt wird nicht aber bei einem einfachen Kilck.
Deswegen habe ich editTriggers auf NoEditTriggers gesetzt und einen Eventfilter für den viewport meines TableWidgets installiert.
In diesem fange ich QEvent::MouseButtonPress ab (werte es anderweitig aus) beende die Funktion mit true und unterdrücke so die Selektierbarkeit einer Spalte mit einem Klick.
Nun zum eigentlichen Problem: Wenn nun eine Spalte (durch einen Doppelklick) selektiert wird (die Spalte ist dann grau hinterlegt), möchte ich darüber informiert werden um dann entsprechend reagieren zu können.
Ich habe mir die Signale von QTableWindget und dem dazugehörigen horzontalHeader angeschaut aber Nichts gefunden...
Wie kann ich das erreichen?
Vielen Dank
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Nö, tut sie nicht! Oder wo steht da schon was von currentIndex?padreigh hat geschrieben:Die Lösung steht da doch schon:
Das 'Problem' ist, dass ich so immer nur den 'alten' Index erhalte. Klicke ich z.B. auf Spalte 5 bekomme ich von currentIndex().column() im Handler den Wert -1. Klicke ich dann auf Spalte 4 bekomme ich den Wert 5... Also immer den vorherigen...padreigh hat geschrieben: in dem holst du dir den currentIndex deines Views und schmeisst den wieder als eigenes Signal los das ihn [= den Index] als parameter hat ... ?
Kann ich Dir erst sagen wenn das Problem gelöst.padreigh hat geschrieben: was ist daran so schwer?
Und sie steht doch da ... der Hinweis auf "viele" Signale ... gucksdudoku:
zu machen ?
Insgesamt hat das Systemunterschiedliche Verhalten von Widgets einen Sinn ... Windowsuser sind gewöhnt alles antatschen zu können ohne das was passiert, wenn ich dann die Widgets so umbaue das die mit einem Klick statt doppelklick schon was machen höre ich schon jetzt die Supporthotlines klingeln. In Linux ists andersrum ... die werden warscheinlich aber eher darauf kommen auch einen Doppelklick zu machen (und sich ihren Teil dabei denken) aber die Anwendung geht dann trotzdem am normalen Feel (aka Look&Feel) vorbei
Was ist dann so schwer daran einvoid cellActivated ( int row, int column )
void cellChanged ( int row, int column )
void cellClicked ( int row, int column )
void cellDoubleClicked ( int row, int column ) // <<<<=====
void cellEntered ( int row, int column )
void cellPressed ( int row, int column )
void currentCellChanged ( int currentRow, int currentColumn, int previousRow, int previousColumn ) // <<<<=====
void currentItemChanged ( QTableWidgetItem * current, QTableWidgetItem * previous )
void itemActivated ( QTableWidgetItem * item )
void itemChanged ( QTableWidgetItem * item )
void itemClicked ( QTableWidgetItem * item )
void itemDoubleClicked ( QTableWidgetItem * item )// <<<<=====
void itemEntered ( QTableWidgetItem * item )
void itemPressed ( QTableWidgetItem * item )
void itemSelectionChanged ()
Code: Alles auswählen
connect(meinTableWidget,SIGNAL(/*hierpasendes signal rein*/), this, SLOT(/*hier selbstgeschriebenen slot rein */));Insgesamt hat das Systemunterschiedliche Verhalten von Widgets einen Sinn ... Windowsuser sind gewöhnt alles antatschen zu können ohne das was passiert, wenn ich dann die Widgets so umbaue das die mit einem Klick statt doppelklick schon was machen höre ich schon jetzt die Supporthotlines klingeln. In Linux ists andersrum ... die werden warscheinlich aber eher darauf kommen auch einen Doppelklick zu machen (und sich ihren Teil dabei denken) aber die Anwendung geht dann trotzdem am normalen Feel (aka Look&Feel) vorbei