У меня есть простой QTableWidget настроить так:QTableWidget выбор нескольких ячеек с правой кнопкой мыши
self.table= QtGui.QTableWidget()
self.table.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
self.table.viewport().installEventFilter(self)
self.table.verticalHeader().setResizeMode(2)
self.table.horizontalHeader().setResizeMode(2)
EventFilter реагирует:
def eventFilter(self, source, event):
if event.type() == QtCore.QEvent.MouseButtonRelease:
if event.button() == QtCore.Qt.LeftButton:
--- LMB action ---
if event.button() == QtCore.Qt.RightButton:
--- RMB action ---
return QtGui.QWidget.eventFilter(self, source, event)
События отлично работает для левой кнопки мыши нажмите : он обнаруживает как один клик, так и выбор нескольких ячеек. Я хотел бы иметь возможность сделать то же самое с правой кнопкой мыши - прямо сейчас он распознает только RMB-клик, но я не могу выбрать несколько ячеек. Я что-то испортил, или я что-то упустил?
EDIT 1: Я использовал self.table.itemEntered.connect(handleItemPressed)
предложенную MarkyPython и теперь у меня есть следующие:
def eventFilter(self, source, event):
def handleItemPressed(item):
self.table.setItemSelected(item, 1)
if event.type() == QtCore.QEvent.MouseButtonPress:
if event.button() == QtCore.Qt.RightButton:
self.table.itemEntered.connect(handleItemPressed)
if event.type() == QtCore.QEvent.MouseButtonRelease:
if event.button() == QtCore.Qt.LeftButton:
--- LMB action ---
if event.button() == QtCore.Qt.RightButton:
--- RMB action ---
return QtGui.QWidget.eventFilter(self, source, event)
, который работает таким образом. Теперь я могу выбрать ячейки с правой и левой кнопкой мыши, однако выбор правой кнопки мыши немного неудобен (как вы можете себе представить, он выбирает только элементы/ячейки, которые зависали, в отличие от выбора классического блока слева кнопка мыши). Так что мой вопрос почти решен
Я разместил * itemEntered * в своем коде, см. Мой отредактированный пост. Благодарим вас за предложение –
. Вы должны проверить этот [сайт] (http://pyqt.sourceforge.net/Docs/PyQt4/qtablewidget.html) за дополнительной информацией о классе 'QTableWidget'. Это очень помогло мне. – MarkyPython