#python #pyside2 #qtablewidget #qtablewidgetitem
#python #pyside2 #qtablewidget #qtablewidgetitem
Вопрос:
У меня есть 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)
Мне это кажется довольно простым, но, к сожалению, не работает. Могу ли я не добавлять a mousePressEvent
к QTableWidgetItem
объектам? Большое спасибо.
Ответ №1:
QTableWidgetItem — это не визуальный элемент, а информационный контейнер, поэтому у него нет метода, подобного mousePressEvent . Что нужно сделать, это переопределить метод mousePressEvent QTableWidget и получить ячейки задач:
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))