当用户右键点击场景的空白部分时,有没有办法显示弹出窗口?
我是Qt的新手,我尝试了插槽和子类化,但无济于事。
没有这样的插槽,分别是:
“错误:'QMouseEvent'尚未声明”
尝试实施onMouseRelease
事件时。
答案 0 :(得分:10)
QGraphicsView是用于显示QGraphicsScene内容的小部件。因此,实现上下文菜单(弹出菜单)的正确位置是QGraphicsView。
你需要重新实现contextMenuEvent函数是你自己继承自QGraphicsView的类:
void YourGraphicsView::contextMenuEvent(QContextMenuEvent *event)
{
QMenu menu(this);
menu.addAction(...);
menu.addAction(...);
...
menu.exec(event->globalPos());
}
另请参阅Qt的Menus Example。
答案 1 :(得分:7)
您可以重新实现contextMenuEvent
类的QGraphicsScene
方法,这样您就可以访问场景坐标和屏幕坐标(而不是QGraphicsView
,也有效,但没有这方面的信息):
void YourGraphicsScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
{
// event->scenePos() is available
QMenu menu(this);
menu.addAction(...);
menu.addAction(...);
...
menu.exec(event->screenPos());
}