C++ 自定义快捷方式上的关联菜单

C++ 自定义快捷方式上的关联菜单,c++,qt,C++,Qt,我在主窗口中有一个QGraphicsView,当我按下两个鼠标按钮时,我在画布上有一个自定义的“抓取”功能(即主窗口中的QGraphicsView) 因此,我只想在按住CTRL键并单击鼠标右键时激活关联菜单,而不想仅在单击鼠标右键时激活关联菜单。保留操作上下文菜单策略非常重要 有办法吗 只要检查一下。可以指定所需的修改器。在您的例子中,它是ControlModifier。然后,重写方法mousePressEvent(): 如果要使用此功能,需要调用QMenu。只需在类中添加此函数: void

我在主窗口中有一个
QGraphicsView
,当我按下两个鼠标按钮时,我在画布上有一个自定义的“抓取”功能(即主窗口中的
QGraphicsView

因此,我只想在按住CTRL键并单击鼠标右键时激活关联菜单,而不想仅在单击鼠标右键时激活关联菜单。保留
操作上下文菜单
策略非常重要

有办法吗

只要检查一下。可以指定所需的修改器。在您的例子中,它是
ControlModifier
。然后,重写方法
mousePressEvent()


如果要使用此功能,需要调用
QMenu
。只需在类中添加此函数:

void yourClass::showMenu()
{
    QMenu contextMenu(this);

    QAction action("My Action", this);
    contextMenu.addAction(&action);

    contextMenu.exec(); 
}

听起来你应该将画布上的鼠标事件子类化来实现这一点。但是我如何调用上下文菜单呢?对我来说,现在它是自动的,我只是添加了一些动作。你说它是自动的是什么意思?用菜单显示您的代码,然后我就没有菜单的代码了。我刚刚在PropertyEditor中将ContextMenuPolicy更改为ActionsContextMenu,并在ActionEdior中添加了一个操作。现在,当我右键单击时,我有一个上下文菜单。哦,好的。如果要覆盖
mousePressEvent
,则无法执行此操作。您只需要添加一个函数,在其中添加QMenu,在其中添加QAction,然后调用
menu.exec()
。现在您可以在
mousePressEvent
中调用此函数,请将其作为答案写入,我将接受它。在您发表评论之前,我也这么做了:)
void yourClass::showMenu()
{
    QMenu contextMenu(this);

    QAction action("My Action", this);
    contextMenu.addAction(&action);

    contextMenu.exec(); 
}