我对QMenu项目的反应有问题,我在QPushButton上创建。仅当我双击菜单项时才执行该操作。如果我先双击,之后只需点击一下即可。
在guiMain.cxx中,我通过settingsMenu.cxx类中的信号/插槽创建了一个QMenu,它无法访问gui元素或预定义的动作,并在guiMain.cxx中发回创建的QMenu对象。在发出QMenu之后,我在其中添加了我的预定义动作并将其连接到其他方法,这样做了一些事情。这个工作流程出了什么问题?
guiMain.cxx
void guiMain::createSignalAndSlots()
{
connect(pushButton, SIGNAL(clicked()),
(m_SettingsMenu.data(), SLOT(createViewSettingsMenuSlot()));
connect(m_SettingsMenu.data(), SIGNAL(getViewSettingsMenuSignal(QMenu *)),
this, SLOT(getViewSettingsMenuSlot(QMenu *)));
}
void guiMain::getViewSettingsMenuSlot(QMenu *menu)
{
menu->addAction(actionResetView);
connect(actionResetView, SIGNAL(triggered()),
this, SLOT(resetViewsSlot()));
}
void guiMain::(resetViewsSlot()
{
do something
}
settingsMenu.cxx
void settingsMenu::createViewSettingsMenuSlot()
{
QWidget *widget= new QWidget();
QWidgetAction *wa= new QWidgetAction(0);
wa->setDefaultWidget(widget);
QMenu *menu= new QMenu;
menu->addAction(wa);
emit getViewSettingsMenuSignal(menu);
}
感谢您的帮助。