如何将QTableView连接到右键菜单

How to connect QTableView to a right-click menu

使用旧语法,我们不得不使用 QtCore.SIGNAL("customContextMenuRequested(QPoint)" 东西。

现在随着 Qt5 的出现,旧的 QtCore.SIGNAL 语法不再酷,因为它变得绝对。

如何修改下面贴出的PyQt4工作代码使其兼容PyQt5(只关心连接右键菜单)?

class TableView(QtGui.QTableView):
    def __init__(self, parent):
        QtGui.QTableView.__init__(self, parent)
        self.rcMenu=QtGui.QMenu(self)
        self.rcMenu.addAction('My Action')
        self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.connect(self, QtCore.SIGNAL("customContextMenuRequested(QPoint)" ), self.onRightClick)

def onRightClick(self, QPos=None):       
    parent=self.sender()
    pPos=parent.mapToGlobal(QtCore.QPoint(5, 20))
    mPos=pPos+QPos

    self.rcMenu.move(mPos)
    self.rcMenu.show()

替换:

self.connect(self, QtCore.SIGNAL("customContextMenuRequested(QPoint)" ), self.onRightClick)

与:

self.customContextMenuRequested.connect(self.onRightClick)

class TableView(QtGui.QTableView):
    def __init__(self, parent):
        QtGui.QTableView.__init__(self, parent)
        self.rcMenu=QtGui.QMenu(self)
        self.rcMenu.addAction('My Action')
        self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.customContextMenuRequested.connect(self.onRightClick)

def onRightClick(self, QPos=None):       
    parent=self.sender()
    pPos=parent.mapToGlobal(QtCore.QPoint(5, 20))
    mPos=pPos+QPos

    self.rcMenu.move(mPos)
    self.rcMenu.show()