PyQt5. QListWidgetItem в QListWidget. отслеживать правую кнопку мыши
Подскажите пожалуйста как привязать функцию к щелчку правой кнопке мыши по QListWidgetItem
Нашел в документации только itemClicked и itemDoubleClicked.
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
вы можете устанавливает фильтр событий на объект list_widget.
from PyQt5 import QtCore, QtWidgets
class Widget(QtWidgets.QWidget):
def __init__(self, parent=None):
super(Widget, self).__init__(parent)
self.list_widget = QtWidgets.QListWidget()
self.list_widget.installEventFilter(self)
btn = QtWidgets.QPushButton("add")
btn.clicked.connect(self.add_item)
grid = QtWidgets.QGridLayout(self)
grid.addWidget(self.list_widget, 0, 0)
grid.addWidget(btn, 1, 0)
def eventFilter(self, obj, event):
if obj is self.list_widget and event.type() == QtCore.QEvent.ContextMenu:
item = self.list_widget.currentItem()
if item:
text = item.text()
print(f'clicked item text: {text}')
return super().eventFilter(obj, event)
@QtCore.pyqtSlot()
def add_item(self):
num = self.list_widget.count()
self.list_widget.addItem(f"item {num}")
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())
