python - 在 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)
这对我来说似乎相当直截了当,但不幸的是不起作用。我不能添加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))
推荐阅读
- java - 带有 @target 和自定义注释的 Spring Boot AOP IllegalArgumentException,
- python - 无法用熊猫读取泡菜文件
- visual-studio-code - 开发扩展时如何检查编辑器中的文本是否有焦点?
- php - 使用 laravel 图像包上传 .JPG 文件时出现问题
- java - 查找由多个组合子数组组成的数组的索引
- ios - 在 iOS 上缺少“会话 cookie”,使用了 React Native WebView
- google-cloud-platform - 使用 flex-template 运行流式数据流作业时模板启动失败
- tensorflow-lite - 多个批次在 TensorFlow Lite 中正常运行的条件是什么?
- javascript - 使用 Django 模板在 Javascript 中从数据库中获取数据
- android - 如何获得解决 Android 底页的目标状态?