有没有一种方法可以在用户右键单击场景的空白部分时显示弹出窗口?
我是Qt的新手,我尝试过使用槽和子类化,但都没有成功。
不存在这样的槽函数和相应的错误:“QMouseEvent未声明”,当尝试实现“onMouseRelease”事件时。
我是Qt的新手,我尝试过使用槽和子类化,但都没有成功。
不存在这样的槽函数和相应的错误:“QMouseEvent未声明”,当尝试实现“onMouseRelease”事件时。
你可以重新实现 QGraphicsScene
类的 contextMenuEvent
方法,这将使你可以访问场景坐标以及屏幕坐标(与 QGraphicsView
相反,它也可以工作但没有此信息):
void YourGraphicsScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
{
// event->scenePos() is available
QMenu menu(this);
menu.addAction(...);
menu.addAction(...);
...
menu.exec(event->screenPos());
}
QGraphicsView是用于显示QGraphicsScene内容的小部件。因此,实现上下文菜单(弹出菜单)的正确位置是QGraphicsView。
您需要在继承自QGraphicsView的自己的类中重新实现contextMenuEvent函数:
void YourGraphicsView::contextMenuEvent(QContextMenuEvent *event)
{
QMenu menu(this);
menu.addAction(...);
menu.addAction(...);
...
menu.exec(event->globalPos());
}
还可以参考Qt的菜单示例。