我正在构建一个菜单,我希望能够点击QAction
和QMenu
个项目。
运行exec
时,如果点击QMenu
,则不会发生任何事情。
即使我向QMenu
添加了操作。
有办法做到这一点吗?
以下是我的尝试:
QMenu* menu = new QMenu( "xxx", topMenu );
QAction* action = menu->menuAction();
topMenu->addAction( action );
答案 0 :(得分:0)
修改强>
我不知道为什么exec()
会让它与众不同,但是为了绕过它你可以创建QMenu
的子类作为你的topMenu,以便它像这样手动处理鼠标释放事件:
void CustomMenu::mouseReleaseEvent(QMouseEvent *event) {
QAction *const actionAtEvent = actionAt(event->pos());
if (actionAtEvent)
actionAtEvent->trigger();
QMenu::mouseReleaseEvent(event);
}
原创,无效回答:
使用QMenu::menuAction()获取关联的QAction
并连接其信号可能有所帮助。