Seite 1 von 1

[gelöst] ExtendedSelection mit Kontext Menü in Qt4

Verfasst: 8. Juli 2005 04:04
von Volker
Hallo,

ich hab folgendes Problem bei dem ich keine Ahnung hab wie ich das lösen könnte:

In einem TreeView hab ich einige Dateien und Verzeichnisse aufgelistet. Nun möchte ich ein Kontextmenü haben, welches mir Optionen zur Bearbeitung der ausgewählten Dateien anbietet.
Da ich als SelectionMode ExtendedSelection gewählt hab, dachte ich eigentlich, ich könnte damit mehrere Dateien auswählen. Das Problem ist allerdings, so bald ich nach dem Markieren der Dateien mit der rechten Maustaste in das TreeView Objekt klicke um das Kontextmenü zu öffnen, ändert sich die Selektion auf den Eintrag, bei dem ich mit rechts geklickt habe.
Lässt sich das irgendwie umgehen, so daß die rechte Maustaste keine Änderungen mehr an der Auswahl vornimmt, sondern nur noch die Linke?


Wäre super wenn mir da jemand weiterhelfen könnte!

Danke

Re: ExtendedSelection mit Kontext Menü in Qt4

Verfasst: 8. Juli 2005 07:47
von macman
mousePressEvent() schon überschrieben? Eventuell sind die Einträge dann noch selektiert und Du kannst sie in einer Membervariable speichern. Vielleicht hilft auch selectionChanged(), um zu sehen wann sie deselektiert werden.

Re: ExtendedSelection mit Kontext Menü in Qt4

Verfasst: 8. Juli 2005 12:38
von Volker
macman hat geschrieben:mousePressEvent() schon überschrieben?
Bisher hatte ich keine Unterklasse von QTreeView gebildet, ich dachte vielleicht gibts ja auch eine einfachere Möglichkeit. Aber ich werd's mal damit probieren.

Re: ExtendedSelection mit Kontext Menü in Qt4

Verfasst: 8. Juli 2005 13:37
von macman
Volker hat geschrieben:Bisher hatte ich keine Unterklasse von QTreeView gebildet, ich dachte vielleicht gibts ja auch eine einfachere Möglichkeit. Aber ich werd's mal damit probieren.
Ich würd's erst in dem Parent versuchen, was immer es auch ist. Gib Bescheid ob es geklappt hat.

Geklappt

Verfasst: 8. Juli 2005 21:13
von Volker
Nachdem ich mir mal den Source von QTreeView angeschaut hab, schiens mir doch einfacher, eine Unterklasse von QTreeView zu erzeugen. Hab nun einfach eine Abfrage in meiner mousePressEvent Methode, ob die rechte Maustaste gedrückt wurde und falls nicht ruf ich wieder die Oberklassenmethode von QTreeView auf.

Nachdem ich nun sowieso eine Unterklasse hab, könnte ich mir damit auch den Umweg des Kontextmenüs über das customContextMenuRequested Signal sparen und es gleich in der contextMenuEvent Methode implementieren.

Also danke für den Tip. Hat mir weitergeholfen.