Skip to content
  • Steven Pehrson's avatar
    Handle sub-menu's and keyboard navigation · ea5b256b
    Steven Pehrson authored
    What I mean by sub-menu is when one of the QActions in a QMenu is a
    menuAction.
    
    Keyboard navigation is using keyboard accelearators, or using the arrow
    keys to navigate the QMenu.
    
    Here is an example widget that demonstrates when these features are
    needed
    
    class QMenuTester : public QLabel
    {
    public:
      QMenuTester()
      {
        setText( "Right-click me" );
      }
    
      void contextMenuEvent( QContextMenuEvent* event ) override
      {
        QMenu submenu( "Sub-Menu 1" );
        submenu.setObjectName( "mSubMenu1" );
        auto action1 = submenu.addAction( "&Action in sub-menu 1" );
        action1->setShortcut( QKeySequence( Qt::CTRL + Qt::Key_0 ));
    
        QMenu submenu2( "Sub-Menu 2 (added via action)" );
        submenu2.setObjectName( "mSubMenu2FromAction" );
        auto action = submenu2.addAction( "From action added sub-menu" );
        submenu.addAction( submenu2.menuAction() );
    
        auto submenu2b = submenu.addMenu( "Sub-Menu 2 (Added directly" );
        submenu2b->setObjectName( "mSubMenu2AddedDirectly" );
        submenu2b->addAction( "From directly added sub-menu" );
    
        QList< QAction* > actions;
        actions.append( new QAction( "Action 1", this ) );
        actions.append( submenu.menuAction() );
        QMenu::exec( actions, event->globalPos() );
      }
    };
    ea5b256b