【问题标题】:How to get QTableView right clicked index如何获取 QTableView 右键单击​​索引
【发布时间】:2018-07-14 04:25:45
【问题描述】:

下面的代码创建一个带有QTableView 视图的对话框。 左键单击onLeftClick函数会获得一个QModelIndex index。 此 QModelIndex 稍后用于打印左键单击单元格的行号和列号。

如何获取被右键单击的单元格的QModelIndex索引?

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_()

【问题讨论】:

    标签: python pyqt pyqt5 qtableview


    【解决方案1】:

    你必须使用QAbstractScrollAreaQTableView)的indexAt()方法:

    def onRightClick(self, qPoint):
        index = self.view.indexAt(qPoint)
        if index.isValid():
            print('onClick index.row: %s, index.col: %s' % (index.row(), index.column()))
    

    【讨论】:

      猜你喜欢
      • 2018-05-30
      • 1970-01-01
      • 2011-12-08
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多