Problem mit QTableView und IndexAt()

Alles rund um die Programmierung mit Qt
Antworten
shaka
Beiträge: 27
Registriert: 8. November 2006 10:36
Wohnort: München

Problem mit QTableView und IndexAt()

Beitrag von shaka »

Hallo!

Ich habe ein QTableView (Qt 4.2.1), für das ich dynamische Tooltips anzeigen möchte, deren Inhalt u.a. davon abhängt, über welcher Zelle der Mauszeiger steht.
Ich habe dazu für die TableView einen Event Filter installiert, der alle Tooltip-Events abfängt und dann mittels

QHelpEvent* helpEvt = static_cast<QHelpEvent*>(event);
emit ShowToolTip( helpEvt->pos(), helpEvt->globalPos() );

ein Signal rausgibt, bei welcher Position bzgl. der TableView bzw. bei welcher globalen Position das Event ausgelöst wurde.

In einer anderen Klasse fange ich das Signal auf und besorge mir mittels

QModelIndex index = myTableView->indexAt(position)

einen Modelindex, um die Informationen zu der unter dem Mauszeiger liegenden Zelle vom Model abfragen zu können. Das Problem ist, daß dieser Index immer "eine Zeile daneben zeigt" - also immer auf die Zelle eine Reihe unterhalb des Mauszeigers - und daß ich für die unterste Zeile der TableView überhaupt keine gültigen Model-Indices bekomme.

Kennt jemand dieses Phänomen und kann mir weiterhelfen?

Danke
Shaka
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Die Möglichkeit, daß das Model die ToolTips liefert hast du schon mal in Betracht gezogen?

Die Position die du geliefert bekommst, ist die vom Viewport oder vom gesamten Widget?
shaka
Beiträge: 27
Registriert: 8. November 2006 10:36
Wohnort: München

Falsche Position

Beitrag von shaka »

Die Position ist wohl vom ganzen WIdget, wenn ich die Doku richtig verstehe... Das ist wohl das Problem. Mal schauen, wie ich da drumrum komme.

Danke
Shaka

P.S: Leider habe ich im Model nicht alle Informationen zur Verfügung, die ich im Tooltip anzeigen will, drum muß ich es quasi "von außerhalb" machen.
Antworten