我正在构建一个菜单,我希望能够同时单击QAction和QMenu项目。
运行exec时,如果单击QMenu. 即使我在QMenu.
有没有办法做到这一点?
这是我尝试过的:
QMenu* menu = new QMenu( "xxx", topMenu );
QAction* action = menu->menuAction();
topMenu->addAction( action );
编辑:
我不知道为什么exec()让它与众不同,但要绕过它,您可以创建子类QMenu作为您的 topMenu,以便它像这样手动处理鼠标释放事件:
void CustomMenu::mouseReleaseEvent(QMouseEvent *event) {
QAction *const actionAtEvent = actionAt(event->pos());
if (actionAtEvent)
actionAtEvent->trigger();
QMenu::mouseReleaseEvent(event);
}
原始的,没有帮助的答案:
它可能会帮助您使用QMenu::menuAction()来关联QAction并连接它的信号。