У меня есть таблица, в которую я хотел бы обновить элементы одним щелчком мыши. Пока что обновление работает почти без нареканий. У меня возникла странная проблема: когда я щелкаю горизонтальную полосу прокрутки внизу моего виджета таблицы, она регистрирует щелчок как нажатие первого элемента в столбце непосредственно над мышью.
Я выполняется python 3.7, pyqt5.
Вот таблица:
class PlotTable(QTableWidget):
removed_column = QtCore.pyqtSignal(int)
update_table = QtCore.pyqtSignal(object)
def __init__(self, rows=0, columns=0, parent=None):
QTableWidget.__init__(self, rows, columns, parent)
self.viewport().installEventFilter(self)
def eventFilter(self, source, event):
if event.type() == QtCore.QEvent.MouseButtonPress:
item = self.itemAt(event.pos())
if item is not None and isinstance(item, QTableWidgetItem):
if event.buttons() == QtCore.Qt.MidButton:
col = item.column()
self.removeColumn(col)
self.removed_column.emit(col)
elif event.buttons() == QtCore.Qt.LeftButton:
self.update_table.emit(item)
return super().eventFilter(source, event)
Цель - обновить выбор таблицы или удалить столбец из таблицы, в зависимости от типа клика. Я подумал, что, возможно, фильтрация QTableWidgetItem предотвратит случайное обновление полосы прокрутки, но это тоже не работает.
Кто-нибудь знает, что здесь происходит?