2012-12-10 94 views
13

如何在菜單中添加子菜單?我需要一個子菜單來打開,比如,點擊如何在Qt中添加子菜單

"A->Setup" 

後,我希望有一個子菜單來打開主菜單的一側。

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

你需要添加行動到創建的子菜單。如果菜單是空的,它不會出現 –

回答

15

QMenu::addMenu()返回指向創建的子菜單的指針。您可以使用這些指針爲子菜單添加操作。

下面的代碼:

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"); 

(提示:這迫切需要一個循環)

會產生這樣的菜單:

Screenshot of the created menu

就可以連接插入到返回動作的triggered()信號(例如actionA_Setup )。