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 但无济于事。我在这里错过了什么?
您需要将 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());
}
我在 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 但无济于事。我在这里错过了什么?
您需要将 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());
}