Markus Dod
Markus Dod

Reputation: 21

pyqt - contextmenu for QGraphicsScene

I have a QGraphicsScene and I will display a contextmenu. But nothing happend.

Here is my Code:

class graphicsScene(QtGui.QGraphicsScene):
  def __init__ (self, parent = None):
    super(graphicsScene, self).__init__ (parent)

  def contextMenuEvent(self, event):
    self.popMenu = QtGui.QMenu()
    self.popMenu.addAction(QtGui.QAction('test0', None))
    self.popMenu.addAction(QtGui.QAction('test1', None))
    self.popMenu.addSeparator()
    self.popMenu.addAction(QtGui.QAction('test2', None))
    self.popMenu.exec_(event.globalPos())

  def mousePressEvent(self, event):
    super(graphicsScene, self).mousePressEvent(event)
    pos = event.scenePos()
    item = self.itemAt(pos)

    if event.button() == QtCore.Qt.LeftButton:
      #do something

    elif event.button() == QtCore.Qt.RightButton:
      self.contextMenuEvent(event)

I have no idea how to fix this problem.

Thank you for your help!!!

Upvotes: 2

Views: 1798

Answers (1)

RodericDay
RodericDay

Reputation: 1292

This may help:

class Table(QtGui.QGraphicsView):
  def __init__(self, parent=None):
    super(Table, self).__init__(parent)
    self.setScene(QtGui.QGraphicsScene())
    self.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu)

  def contextMenuEvent(self, event):
    menu = QtGui.QMenu()
    menu.addAction('sample')
    menu.exec_(event.globalPos())

Upvotes: 1

Related Questions