【发布时间】:2013-10-23 05:52:21
【问题描述】:
我有一个使用 QTableWidget (PyQt) 的带有多个表的窗口。我使用鼠标右键创建了一个弹出菜单,它工作正常。 但是,我需要根据单击鼠标右键时鼠标悬停在哪个表上来创建不同的弹出菜单。如何让鼠标告诉我它悬停在哪个表上?
或者,换句话说,如何实现一个方法以根据鼠标位置获得特定的上下文菜单?
我正在使用 Python 和 PyQt。
我的弹出菜单的开发类似于此代码(PedroMorgan 来自Qt and context menu 的回答):
class Foo( QtGui.QWidget ):
def __init__(self):
QtGui.QWidget.__init__(self, None)
# Toolbar
toolbar = QtGui.QToolBar()
# Actions
self.actionAdd = toolbar.addAction("New", self.on_action_add)
self.actionEdit = toolbar.addAction("Edit", self.on_action_edit)
self.actionDelete = toolbar.addAction("Delete", self.on_action_delete)
# Tree
self.tree = QtGui.QTreeView()
self.tree.setContextMenuPolicy( Qt.CustomContextMenu )
self.connect(self.tree, QtCore.SIGNAL('customContextMenuRequested(const QPoint&)'), self.on_context_menu)
# Popup Menu
self.popMenu = QtGui.QMenu( self )
self.popMenu.addAction( self.actionEdit )
self.popMenu.addAction( self.actionDelete )
self.popMenu.addSeparator()
self.popMenu.addAction( self.actionAdd )
def on_context_menu(self, point):
self.popMenu.exec_( self.tree.mapToGlobal(point) )
【问题讨论】:
-
您说的是 QTableWidget,但您的示例使用了 QTreeView。你用的是哪一个?