[gelöst] treeview ModelIndex & MousePosition

Alles rund um die Programmierung mit Qt
Antworten
24dan
Beiträge: 274
Registriert: 26. Juni 2006 14:15
Wohnort: Hamburg

[gelöst] treeview ModelIndex & MousePosition

Beitrag von 24dan »

Hi,
in meinem QTreeView möchte ich gerne ein Kontextmenü integrieren.

Jetzt habe ich eine Problem den richtigen ModelIndex zu bekommen.
Für das Kontextmenu verwende ich das schon vorhandene

Code: Alles auswählen

contextMenuEvent()
, damit wird mir das Menü richtig Positioniert.
Jedoch bekomme ich einen "falschen" Index für meine Angeklickte Zelle
Die lese ich bisher mit....

Code: Alles auswählen

ui->treeView->indexAt(e->pos())
Das SIGNAL

Code: Alles auswählen

connect(ui->treeView, SIGNAL(clicked(QModelIndex))
liefert mir den richtigen Index jedoch habe ich keine Idee wie ich jetzt dieses SIGNAL und das contextMenuEvent() verwenden kann?
Zuletzt geändert von 24dan am 13. Juni 2010 17:46, insgesamt 3-mal geändert.
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

QWidget::mapFromParent() hilft dir.
24dan
Beiträge: 274
Registriert: 26. Juni 2006 14:15
Wohnort: Hamburg

Beitrag von 24dan »

franzf hat geschrieben:QWidget::mapFromParent() hilft dir.
Bin ich richtig verstanden worden???

Also ich habe mein Problem jetzt so gelöst....

1. contextMenuEvent(QContextMenuEvent * e) implementieren
2. Kontextmenu, hier ein QtPieMenu erstellen mit Abhängigkeit zum Inhalt dazu Index holen: ui->treeView->currentIndex()
3. Kontextmenu anzeigen mit p->popup(e->globalPos());

Fertig
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Wer kann das schon sagen, schließlich hast du deine Anfrage nachbearbeitet.
24dan
Beiträge: 274
Registriert: 26. Juni 2006 14:15
Wohnort: Hamburg

Beitrag von 24dan »

upsala hat geschrieben:Wer kann das schon sagen, schließlich hast du deine Anfrage nachbearbeitet.
Ach mann spielverderber.. ich hab doch nur den letzten Satz noch hinzugefügt....
Ja is doof...
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

24dan hat geschrieben:
franzf hat geschrieben:QWidget::mapFromParent() hilft dir.
Bin ich richtig verstanden worden???
Ich bin mir ziemlich sicher dass ich dich verstanden habe. Du hast ein Widget, aufgesetzt mit einem ui. In deinem Widget fängst du das mousePressEvent() ab. Dein treeView befindet sich irgendwo innerhalb des Widgets, weshalb QPoint(0,0) im Tree irgendwo mit x>0, y>0 im Widget zu finden ist, was wiedrum dazu führt, dass wenn du e->pos() direkt an dein treeView übergibst, das um jenen Offset daneben geht.
Lösung: QWidget::mapFromParent().
Antworten