在 QTableWidgetItem 中设置 mousePressEvent 处理程序
Setting a mousePressEvent handler in a QTableWidgetItem
我有一个 QTableWidget
填充了几个 QTableWidgetItem
对象。我正在尝试向我的 QTableWidget
对象添加一个 mousePressEvent
侦听器。
我现在的代码很简单:
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:
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))
我有一个 QTableWidget
填充了几个 QTableWidgetItem
对象。我正在尝试向我的 QTableWidget
对象添加一个 mousePressEvent
侦听器。
我现在的代码很简单:
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:
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))