使用较旧的语法,我们必须使用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()
答案 0 :(得分:-1)
替换:
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()