在QTableWidgetItem

问题描述

我有一个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)

在我看来,这似乎很简单,但不幸的是没有用。我不能在mousepressEvent对象中添加QTableWidgetItem吗?谢谢。

解决方法

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

type SplitWithDefault<
  TComplete,TDefault extends Partial<TComplete>,TSplit extends { default: TDefault,[key: string]: Partial<TComplete> }
> = { default: TDefault }
  & { [P in keyof Omit<TSplit,'default'>]: (TSplit[P] & TDefault) extends TComplete ? TSplit[P] : never };