如何在Qt中动态添加菜单

我想向菜单项动态添加子菜单.我该如何实现?

我这样尝试过
我创建了一个动作和子菜单.然后,我将子菜单添加到操作中.
但是,我已经连接了“触发”的动作信号.如果单击操作,它会崩溃.

我还处理了菜单的“ aboutToShow”信号,同样在单击操作时也会崩溃.

这是示例代码.

Submenu = new QMenu(this);      
connect(Submenu, SIGNAL( aboutToShow()), this, SLOT(move ()));

                  QAction *test = new QAction(tr("Selection"), this);
                  test ->setMenu(Submenu);

                 menubar()->addAction(test);

我想在显示子菜单之前得到通知.

附加信息:

请在您的主窗口构造函数中尝试此代码.

QAction *action = new QAction("Test",this);
QAction *dummyaction = new QAction("Testing",this);
QMenu *menu = new QMenu();
menu->addAction(dummyaction);

bool val= connect(menu, SIGNAL( aboutToShow()), this, SLOT( Move()));
val= connect(menu, SIGNAL( aboutToHide()), this, SLOT(Move()));

action->setMenu(menu);
this->menuBar()->addAction(action);

如果我喜欢这样,则可以看到一个子菜单项.但是在该移动槽口应该被调用之前,它不会被调用..甚至在隐藏之前,同一槽口也应该被调用..它没有来.

我尝试了connect ..仅返回true的返回值…所以我的代码有什么问题..请说..

最佳答案
这样的代码应该工作:

QMainWindow wnd;
QAction *act = wnd.menuBar()->addMenu("SomeMenu")->addMenu("someSubmenu")->addAction("someAction");
QObject::connect(act,SIGNAL(triggered()),
                 someObj,SLOT(actionReaction()));

我认为addMenu()addAction()应该以更可靠的方式工作.这种方法对我有用.

转载注明原文:如何在Qt中动态添加菜单 - 代码日志