fltk Kontextmenü



  • Hallo,

    ich habe eine Klasse mainwindow, nun möchte ich noch ein Kontextmenü einbauen hab auch schon angefangen aber es will einfach kein Kontextmenü entstehen

    mainwindow():Window(100, 100, 640, 480, "Notizverwaltung"), menue(NULL), aendernEintrag(NULL),
                              loeschenEintrag(NULL), operation(NULL) 
                 {
                     datenbank_in_vector();
                     begin();
                     callback(window_callback);
                     menue = new MenuBar(0,0,639,25);
                     menue->user_data(this);
                     menue->add("&Datei/&Beenden",CTRL + 'e',(Callback *)beenden_callback);
                     menue->add("&Bearbeiten/&Neu",CTRL + 'n',(Callback *)neu_callback);
                     menue->add("&Bearbeiten/&Ändern",CTRL + 'a',(Callback *)aendern_callback);
                     menue->add("&Bearbeiten/&Löschen",CTRL + 'l',(Callback *)loeschen_callback);
                     menue->add("&Hilfe/&Info",CTRL + 'i',(Callback *)info_callback);
                     workspace = new Browser(0,25,639,455);
                     popupmenue = new PopupMenu(640,480,640,480);           
                     popupmenue->user_data(this);
                     popupmenue->add("&Neu",CTRL + 'n',(Callback *)neu_callback); 
                     popupmenue->add("&Ändern",CTRL + 'a', (Callback *)aendern_callback); 
                     popupmenue->add("&Löschen",CTRL + 'l', (Callback *)loeschen_callback); 
                     end();
    
                     popup_menue();
                     datenbank_anzeigen();
    
                     aendernEintrag =  menue->find("Bearbeiten/Ändern");
                     loeschenEintrag = menue->find("Bearbeiten/Löschen");
    
                     operation = new operationwindow();
                     resizable(*workspace);
                     menuepruefen();
                     show();
                     }
    
    void popup_menue() {         
                      if(RightButton == event_button()) {     
                      popupmenue->position(event_x()+20,event_y()+50);              
                      popupmenue->popup(); 
                      workspace->set_focus();      
                      }
                 }
    


  • Ohne fltk zu kennen, würde ich darauf tippen, dass die Routine popup_menue, als Reaktion auf das Event MouseButton aufgerufen werden sollte. Der Aufruf in Deinem Konstruktor macht ja keinen Sinn, da zu dem Zeitpunkt, das Fenster vermutlich noch nicht sichtbar ist (ganz am Ende kommt ja erst ein show).

    Vermutlich willst Du das Dein PopupMenu in dem Browser aufgeht. Dann musst Du ausserhalb des jetzigen begin()/end() Paares, ein weiteres begin()/end() Paar aufmachen in dem Du das PopupMenu erzeugst (ohne jede Garantie):

    workspace->begin();
    popupmenue = new PopupMenu(640,480,640,480);          
    popupmenue->user_data(this);
    popupmenue->add("&Neu",CTRL + 'n',(Callback *)neu_callback);
    popupmenue->add("&Ändern",CTRL + 'a', (Callback *)aendern_callback);
    popupmenue->add("&Löschen",CTRL + 'l', (Callback *)loeschen_callback); 
    workspace->end();
    

    Fltk kann eigentlich das PopupMenu selbst handeln, d.h. Du braucht das MouseButton Event nicht abzufangen, sondern wenn das PopupMenu korrekt in die Widget Hierarchie eingehängt ist, funktioniert es vermutlich von alleine.

    Mehr Erfolg bei Fragen dürftest Du haben, wenn Du in einem besser passenden Forum postest. Es gibt übrigens auch ein ftlk Forum (http://www.fltk.org/newsgroups.php)



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Andere GUIs - Qt, GTK+, wxWidgets verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hallo,

    im Verzeichnis "test" von fltk2 findest du ein Beispiel wie du
    Menüs erstellst..
    Schau mal rein!


Anmelden zum Antworten