2012-12-10 12 views
13

Come si aggiunge un sottomenu dal menu sottostante? Ho bisogno di un sottomenu per aprire, per esempio, dopo aver cliccatoCome aggiungere un sottomenu in Qt

"A->Setup" 

voglio un sottomenu per l'apertura verso il lato del menu principale.

void MyMenu::cppSlot() 
     { 
      QMenu *xmenu = new QMenu; 
      xmenu->addMenu("A -> Setup"); 
      xmenu->addMenu("B -> Setup"); 
      xmenu->addMenu("C -> Setup"); 
      xmenu->addMenu("D -> Setup"); 
      xmenu->addMenu("E -> Setup"); 
      //Change font and width 
      xmenu->setFont(QFont ("Courier", 10)); 
      xmenu->setFixedWidth(250); 
      //Colour setting 
      xmenu->setAutoFillBackground(true); 
      /*QPalette palette=xmenu->palette(); 
      palette.setColor(QPalette::Window, Qt::black); 
      palette.setColor(QPalette::Window, Qt::text); 
      palette.color(green) 
      xmenu->setPalette(palette);*/ 

      // Align the menu coordinates 
      // xmenu-> 
      xmenu->move(900,300); 

      xmenu->show(); 


     } 
+0

È necessario aggiungere un'azione ai sottomenu creati. Se il menu è vuoto, non verrà visualizzato –

risposta

15

QMenu::addMenu() restituisce un puntatore al sottomenu creato. È possibile utilizzare questi puntatori per aggiungere azioni per i sottomenu.

Il seguente codice:

QMenu *xmenu = new QMenu(); 
QMenu* submenuA = xmenu->addMenu("A"); 
QMenu* submenuB = xmenu->addMenu("B"); 
QMenu* submenuC = xmenu->addMenu("C"); 
QMenu* submenuD = xmenu->addMenu("D"); 
QMenu* submenuE = xmenu->addMenu("E"); 
QAction* actionA_Setup = submenuA->addAction("Setup"); 
QAction* actionB_Setup = submenuB->addAction("Setup"); 
QAction* actionC_Setup = submenuC->addAction("Setup"); 
QAction* actionD_Setup = submenuD->addAction("Setup"); 
QAction* actionE_Setup = submenuE->addAction("Setup"); 

(Suggerimento: Questo piange per un ciclo)

produrrà un menù come questo:

Screenshot of the created menu

È possibile quindi collegare slot per il segnale triggered() delle azioni restituite (ad es. actionA_Setup).