在 QTableWidgetItem 中设置 mousePressEvent 处理程序
Posted
技术标签:
【中文标题】在 QTableWidgetItem 中设置 mousePressEvent 处理程序【英文标题】:Setting a mousePressEvent handler in a QTableWidgetItem 【发布时间】:2020-09-27 22:26:33 【问题描述】:我有一个 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
对象吗?非常感谢。
【问题讨论】:
【参考方案1】: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))
【讨论】:
以上是关于在 QTableWidgetItem 中设置 mousePressEvent 处理程序的主要内容,如果未能解决你的问题,请参考以下文章