我在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 ,但无济于事。我在这里缺少什么?
答案 0 :(得分:1)
您需要将contextMenuEvent
与QMenu
:
void contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
{
QMenu menu;
menu.addAction(new QAction("Rotate &Left", this));
menu.addAction(new QAction("Rotate &Right", this));
menu.exec(event->screenPos());
}