Python 如何获取QTableView右键单击索引
下面的代码创建了一个带有QTableView视图的对话框。 左键单击onLeftClickfunction可获取QModelIndex索引。 此QModelIndex稍后用于打印左键单击的单元格的行号和列号 如何获取右键单击的单元格的QModelIndex索引 您必须使用QAbstractScrollArea QTableView的indexAt方法:Python 如何获取QTableView右键单击索引,python,pyqt,pyqt5,qtableview,Python,Pyqt,Pyqt5,Qtableview,下面的代码创建了一个带有QTableView视图的对话框。 左键单击onLeftClickfunction可获取QModelIndex索引。 此QModelIndex稍后用于打印左键单击的单元格的行号和列号 如何获取右键单击的单元格的QModelIndex索引 您必须使用QAbstractScrollArea QTableView的indexAt方法: from PyQt5.QtGui import * from PyQt5.QtWidgets import * from PyQt5.QtCor
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
app = QApplication([])
class Dialog(QDialog):
def __init__(self, parent=None):
super(Dialog, self).__init__(parent)
self.setLayout(QVBoxLayout())
self.view = QTableView(self)
self.view.setSelectionBehavior(QTableWidget.SelectRows)
self.view.setContextMenuPolicy(Qt.CustomContextMenu)
self.view.customContextMenuRequested.connect(self.onRightClick)
self.view.clicked.connect(self.onLeftClick)
self.view.setModel(QStandardItemModel(4, 4))
for each in [(row, col, QStandardItem('item %s_%s' % (row, col))) for row in range(4) for col in range(4)]:
self.view.model().setItem(*each)
self.layout().addWidget(self.view)
self.resize(500, 250)
self.show()
def onRightClick(self, qPoint):
sender = self.sender()
for index in self.view.selectedIndexes():
print 'onRightClick selected index.row: %s, selected index.column: %s' % (index.row(), index.column())
def onLeftClick(self, index):
print 'onClick index.row: %s, index.row: %s' % (index.row(), index.column())
dialog = Dialog()
app.exec_()
def onRightClick(self, qPoint):
index = self.view.indexAt(qPoint)
if index.isValid():
print('onClick index.row: %s, index.col: %s' % (index.row(), index.column()))