Menü an der Mausposition



  • Hallo,

    ich habe ein QTreeView mit einem Modell drin. Nun würde ich gerne folgendes realisieren:
    Mit der linken Maustaste soll man einen Eintrag markieren können.
    Mit einem Klick der rechten Maustaste hätte ich dann gerne eine art Menü, dass dann erscheint und ein paar Aktionen bereitstellt, die mit diesem Eintrag möglich sind.
    Gibt es da eine Qt Funktion bei der ich mal nachschauen könnte?

    Danke
    blub191817



  • Du könntest das contextMenuEvent(QContextMenuEvent * e) deines Fensters bzw. Programms überschreiben und dort z.B. auf folgende Art ein Kontext-Menü (das ist das Menü, das bei Druck auf die rechte Maustaste erscheint) erzeugen:

    QMenu menu(this);
    	menu.addAction(Funktion1);
    	menu.addAction(Funktion2);
    	menu.addSeparator();
    	menu.addAction(Funktion3);
    
    	menu.exec(event->globalPos());
    

    Dazu müsstest du aber auch an anderer Stelle definieren, was beim Auswahl der Funktionen passieren soll.
    Du brauchst also:
    QMenu, QAction und evt. QContextMenuEvent. Falls nötig, kannst du auch mit einem connect() ein spezielles Kontext-Menü für dein QTreeView erstellen, die oben angegebene Art würde für das gesamte Fenster nur ein solches Menü besitzen. Aber vielleicht reicht das ja schon.


Anmelden zum Antworten