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

时间:2015-03-12 06:52:32

标签: qt qt5.4

我在Qt5.4中有一个自定义的QGraphicsWidget,我正在尝试添加一个上下文菜单。在item的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上的窗口标志更改为 ItemIsSelectable ,但无济于事。我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

您需要将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());
}