QGraphicsWidget 中的上下文菜单使用 addAction()

Context Menu in QGraphicsWidget using addAction()

我在 Qt5.4 中有一个自定义 QGraphicsWidget,我正在尝试向其添加上下文菜单。在项目的 init() 例程中,我添加了两个 QAction 项目,如下所示:

bool MyGraphicsWidget::init()
{
    this->addAction(new QAction("Rotate &Left", this));
    this->addAction(new QAction("Rotate &Right", this));
}

但是当我尝试调出上下文菜单(在 Windows 中右键单击)时,什么也没有显示。

文档似乎说我只需添加 QAction 项,上下文菜单就可以正常工作,而无需覆盖鼠标事件或上下文菜单事件。我尝试将 QGraphicsView 中的 contextMenuPolicy 更改为 ActionsContextMenu 并将 QGraphicsWidget 上的 window 标志更改为 ItemIsSelectable 但无济于事。我在这里错过了什么?

您需要将 contextMenuEventQMenu 一起使用:

void contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
{
    QMenu menu;
    menu.addAction(new QAction("Rotate &Left", this));
    menu.addAction(new QAction("Rotate &Right", this));
    menu.exec(event->screenPos());
}