【问题标题】:Setting a mousePressEvent handler in a QTableWidgetItem在 QTableWidgetItem 中设置 mousePressEvent 处理程序
【发布时间】: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 对象吗?非常感谢。

【问题讨论】:

    标签: python pyside2 qtablewidget 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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-28
      • 2021-11-06
      • 2022-09-30
      • 2012-09-28
      • 1970-01-01
      • 2021-08-29
      • 2014-05-24
      相关资源
      最近更新 更多