В настоящее время у меня есть один QTableWidget с разными ячейками.Когда я щелкаю левой кнопкой мыши по ячейке, я хочу, чтобы число на ней увеличивалось на 1, а если я щелкаю правой кнопкой мыши, я хочу, чтобы число уменьшалось на 1.
Для первой части проблем не возникаеткак я использую
self.(widget_name).cellClicked.connect(self.addone)
Проблема возникает с правой кнопкой мыши.Есть ли встроенный метод для этого?Как мне этого добиться?Я попытался создать свой собственный класс Table из QTableWidgets и переопределить mousePressEvent, но не сработал (щелчок по ячейкам ничего не делает, он даже не выделяет ячейки).Также пробовал eventFilter и ничего.Ниже приведен точный код, который я использовал в обеих ситуациях.
Для mousePressEvent:
class Table(QtWidgets.QTableWidget):
def __init__(self,parent=None):
QtWidgets.QTableWidget.__init__(self,parent)
def mousePressEvent(self,QMouseEvent):
if QMouseEvent.button() == QtCore.LeftButton:
print('left') #FOR DEBUGGING
row = self.currentRow()
column = self.currentColumn()
new_text = round(float(self.item(row,column).text()) + 1,2)
self.item(row,column).setText(str(new_text))
elif event.button() == QtCore.RightButton:
print('right') #FOR DEBUGGING
row = self.currentRow()
column = self.currentColumn()
new_text = round(float(self.item(row,column).text()) - 1,2)
self.item(row,column).setText(str(new_text))
Для eventFilter:
class Table(QtWidgets.QTableWidget):
def __init__(self,parent=None):
QtWidgets.QTableWidget.__init__(self,parent)
self.installEventFilter(self)
def eventFilter(self,QObject,event):
if event.type() == QtCore.QEvent.MouseButtonPress:
if event.button() == QtCore.LeftButton:
print('left') #FOR DEBUGGING
row = self.currentRow()
column = self.currentColumn()
new_text = round(float(self.item(row,column).text()) + 1,2)
self.item(row,column).setText(str(new_text))
elif event.button() == QtCore.RightButton:
print('right') #FOR DEBUGGING
row = self.currentRow()
column = self.currentColumn()
new_text = round(float(self.item(row,column).text()) - 1,2)
self.item(row,column).setText(str(new_text))
Для обоих (для создания таблицы)
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
self.centralwidget = QtWidgets.QWidget(self)
....
self.parameters = Table(self.centralwidget)
...
...
Отладочный текст (печать «влево» или «вправо») также не отображается в консоли.