Отображение всплывающего меню на qgraphicsscene нажмите или щелкните правой кнопкой мыши
есть ли способ показать всплывающее окно, когда пользователь щелкает правой кнопкой мыши на пустой части сцены?
Я новичок в Qt и я пробовал слоты и подклассы, но безрезультатно.
нет такого слота и, соответственно:
"ошибка: 'QMouseEvent' не был объявлен"
при попытке реализации onMouseRelease
событие.
2 ответов
QGraphicsView-виджет, используемый для отображения содержимого QGraphicsScene. Таким образом, правильным местом для реализации контекстного меню (всплывающее меню) является QGraphicsView.
вам нужно переопределить функцию contextMenuEvent-это ваш собственный класс, унаследованный от QGraphicsView:
void YourGraphicsView::contextMenuEvent(QContextMenuEvent *event)
{
QMenu menu(this);
menu.addAction(...);
menu.addAction(...);
...
menu.exec(event->globalPos());
}
см. также Qt Пример Меню.
вы можете повторно использовать тег contextMenuEvent
метод QGraphicsScene
класс, который даст вам доступ к координатам сцены ,а также координатам экрана (в отличие от QGraphicsView
, который также работает, но не имеет этой информации):
void YourGraphicsScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
{
// event->scenePos() is available
QMenu menu(this);
menu.addAction(...);
menu.addAction(...);
...
menu.exec(event->screenPos());
}