0

我在 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 上的窗口标志更改为ItemIsSelectable但无济于事。我在这里想念什么?

4

1 回答 1

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());
}
于 2015-03-12T09:35:14.587 回答