在pyQt5中,我们可以通过重写QWidget的contextMenuEvent方法来实现右键菜单的自定义。在contextMenuEvent方法中,我们可以通过event.pos()方法获取到鼠标点击位置的坐标,然后通过QTableView的indexAt方法将坐标转换成对应的ModelIndex,再通过ModelIndex的row()方法获取到表格的行索引。
以下是一个示例代码:
from PyQt5.QtWidgets import QWidget, QMenu, QTableView
from PyQt5.QtCore import Qt
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.table = QTableView(self)
# 设置表格属性...
def contextMenuEvent(self, event):
menu = QMenu(self)
# 添加菜单项...
# 获取点击位置的行索引
index = self.table.indexAt(event.pos())
if index.isValid():
row = index.row()
print("当前点击的行索引为:", row)
menu.exec_(event.globalPos())
上述代码中,我们首先创建一个QTableView实例,并在contextMenuEvent方法中重写了右键菜单的逻辑。在获取到点击位置的坐标后,我们通过QTableView的indexAt方法将其转换为ModelIndex对象,然后判断是否有效,若有效则通过row()方法获取到行索引并打印出来。
对于pyQt5中的contextMenuEvent以及QTableView的indexAt和row等方法的具体用法和参数含义,可以参考官方文档:QContextMenuEvent、QTableView。
领取专属 10元无门槛券
手把手带您无忧上云