首页 > 解决方案 > 在 QTableWidgetItem 中设置 mousePressEvent 处理程序

问题描述

我有一个QTableWidget填充了几个QTableWidgetItem对象。我正在尝试为 我的对象添加一个mousePressEvent侦听器。QTableWidget

我当前的代码很简单:

class TaskCell(QTableWidgetItem):
    def __init__(self, text, parent):
        super().__init__(text)
        self.parent = parent

    def mousePressEvent(self, event):
        print("Mouse clicked on cell with parent" + self.parent.id)

这对我来说似乎相当直截了当,但不幸的是不起作用。我不能添加mousePressEventQTableWidgetItem对象吗?非常感谢你。

标签: pythonpyside2qtablewidgetqtablewidgetitem

解决方案


QTableWidgetItem 不是视觉元素而是信息容器,所以它没有类似于 mousePressEvent 的方法。要做的就是重写QTableWidget的mousePressEvent方法并获取TaskCells:

class TableWidget(QtWidgets.QTableWidget):
    def mousePressEvent(self, event):
        super().mousePressEvent(event)
        item = self.itemAt(event.pos())
        if isinstance(item, TaskCell):
            print("Mouse clicked on cell with parent {}".format(item.parent.id))

推荐阅读