QMenu执行返回QMenu点击(而不是QAction)

时间:2014-08-08 06:04:17

标签: qt qt4 qmenu qaction

我正在构建一个菜单,我希望能够点击QActionQMenu个项目。

运行exec时,如果点击QMenu,则不会发生任何事情。 即使我向QMenu添加了操作。

有办法做到这一点吗?

以下是我的尝试:

QMenu* menu = new QMenu( "xxx", topMenu );
QAction* action = menu->menuAction();
topMenu->addAction( action );

1 个答案:

答案 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并连接其信号可能有所帮助。