在 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 处理程序的主要内容,如果未能解决你的问题,请参考以下文章

在表格单元格中设置 SVG 图标的大小

qtablewidgetitem 无法 new

如何在 Poedit 中设置 gettext 文本域?

如何在 Django 会话模型中设置自定义字段?

在xib中设置accessibilityIdentifier nil时,必须从用户定义的运行时属性中设置

在 RichTextBox WPF 中设置文化/语言