如何将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()
使用旧语法,我们不得不使用 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()