adaitabehera

TraverseMenu

Feb 3rd, 2020
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.13 KB | None | 0 0
  1. #include "widget.h"
  2.  
  3. #include <QtCore>
  4. #include <QtGui>
  5. #include <QtWidgets>
  6. #include <iostream>
  7.  
  8. static int recursionDepth = 0;
  9. static void traverseMenu(QMenu *menu)
  10. {
  11.     foreach (QAction *action, menu->actions())
  12.     {
  13.         if (action->isSeparator())
  14.         {
  15.             for(int i=0; i<=recursionDepth; ++i)
  16.             {
  17.                 std::cout << "\t";
  18.             }
  19.             std::cout << ">>" << "separator" << std::endl;
  20.         }
  21.         else if (action->menu())
  22.         {
  23.             for(int i=0; i<=recursionDepth; ++i)
  24.             {
  25.                 std::cout << "\t";
  26.             }
  27.             std::cout << ">>" << qPrintable(action->text()) << "(menu)" << std::endl;
  28.  
  29.             ++recursionDepth;
  30.             traverseMenu(action->menu());
  31.             --recursionDepth;
  32.         }
  33.         else
  34.         {
  35.             for(int i=0; i<=recursionDepth; ++i)
  36.             {
  37.                 std::cout << "\t";
  38.             }
  39.             std::cout << ">>" << qPrintable(action->text()) << std::endl;
  40.         }
  41.     }
  42. }
  43.  
  44. int main(int argc, char *argv[])
  45. {
  46.     QApplication a(argc, argv);
  47.     Widget w;
  48.  
  49.     QMenu *menu = new QMenu("Main Menu");
  50.     menu->addAction("Level0First");
  51.     menu->addAction("Level0Second");
  52.  
  53.     menu->addSeparator();
  54.     QAction* third = menu->addAction("Level0Third");
  55.     menu->addSeparator();
  56.     QMenu *subMenu = new QMenu("Sub Menu");
  57.     subMenu->addAction("Level1First");
  58.     subMenu->addAction("Level1Second");
  59.  
  60.     subMenu->addSeparator();
  61.     QAction* third1 = subMenu->addAction("Level1Third");
  62.     subMenu->addSeparator();
  63.     QMenu *subMenu1 = new QMenu("Sub-sub Menu");
  64.     subMenu1->addAction("Level2First");
  65.     subMenu1->addAction("Level2Second");
  66.     subMenu1->addAction("Level2Third");
  67.     subMenu1->addAction("Level2Fourth");
  68.     subMenu1->addAction("Level2Fifth");
  69.     third1->setMenu(subMenu1);
  70.  
  71.     subMenu->addAction("Level1Fourth");
  72.     subMenu->addAction("Level1Fifth");
  73.     third->setMenu(subMenu);
  74.  
  75.     menu->addAction("Level0Fourth");
  76.     menu->addAction("Level0Fifth");
  77.  
  78.     traverseMenu(menu);
  79.  
  80.     w.show();
  81.     return a.exec();
  82. }
Add Comment
Please, Sign In to add comment