【发布时间】:2014-04-09 20:24:09
【问题描述】:
您好,我正在尝试让上下文菜单操作适用于 qgraphicsitem,概括地说,我希望能够右键单击场景中的任何 qgraphicsitem,然后显示上下文菜单并运行 3 个功能之一,具体取决于选择/单击了哪个项目。为此,我创建了一个子类 qgraphicsitem 的节点类,我的代码如下
class Node(QtGui.QGraphicsItem):
Type = QtGui.QGraphicsItem.UserType + 1
def __init__(self, Parent=None):
super(Node, self).__init__()
self.newPos = QtCore.QPointF()
self.setFlag(QtGui.QGraphicsItem.ItemIsMovable)
self.setFlag(QtGui.QGraphicsItem.ItemIsSelectable)
self.setFlag(QtGui.QGraphicsItem.ItemSendsGeometryChanges)
self.setCacheMode(QtGui.QGraphicsItem.DeviceCoordinateCache)
self.setZValue(1)
def notifyaction1(self):
print "action1"
def contextMenuEvent(self, contextEvent):
object_cntext_Menu = QtGui.QMenu()
object_cntext_Menu.addAction("action1")
object_cntext_Menu.addAction("action2", object_cntext_Menu, QtCore.SLOT(self.notifyaction1()))
object_cntext_Menu.addAction("action3")
position=QtGui.QCursor.pos()
object_cntext_Menu.exec_(position)
到目前为止,此代码在正确的位置显示上下文菜单,但我如何知道单击了哪个项目,以便我可以运行相应的操作相关功能。目前只要右键触发notifyaction1函数,报错
Object::connect: 需要括号,插槽 QMenu::
我在 Windows 上使用 pyqt4/python。 谢谢
【问题讨论】:
标签: qt python-2.7 pyqt pyqt4