gpt4 book ai didi

qt - 如何在Qt中动态添加菜单

转载 作者:行者123 更新时间:2023-12-04 12:41:47 26 4
gpt4 key购买 nike

我想动态地将子菜单添加到菜单项。我怎样才能做到这一点?

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

我还处理了菜单的“aboutToShow”信号,同样当我点击 Action 时它也会崩溃。

这是示例代码。

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的返回值..它只是真的......所以我的代码有什么问题..请说..

最佳答案

这样的代码应该工作:

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

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

关于qt - 如何在Qt中动态添加菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2781198/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com