如何在Qt中添加子菜单

22
如何从下面的菜单中添加子菜单?我需要在点击后打开一个子菜单。
"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();


        }

你需要为创建的子菜单添加动作。如果菜单为空,它将不会显示。 - Kamil Klimek
1个回答

35

QMenu::addMenu(const QString &title) 返回指向创建的子菜单的指针。您可以使用这些指针为子菜单添加操作。

以下代码:

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)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接