Как перехватить событие mouseDoubleClickEvent в QTreeWidgetItem?
import sys
from PyQt5 import QtWidgets, QtCore, QtGui
class FirstInstance(QtWidgets.QTreeWidget, QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.setHeaderHidden(True)
self.setGeometry(300, 300, 700, 500)
FirstInstance = QtWidgets.QTreeWidgetItem(self, ['А1'])
Administrative_proceedings_1 = QtWidgets.QTreeWidgetItem(FirstInstance, ['ава'])
QtWidgets.QTreeWidgetItem(Administrative_proceedings_1, ['1'])
QtWidgets.QTreeWidgetItem(Administrative_proceedings_1, ['8'])
QtWidgets.QTreeWidgetItem(Administrative_proceedings_1, ['4'])
QtWidgets.QTreeWidgetItem(Administrative_proceedings_1, ['9'])
QtWidgets.QTreeWidgetItem(Administrative_proceedings_1, ['2'])
QtWidgets.QTreeWidgetItem(Administrative_proceedings_1, ['5'])
QtWidgets.QTreeWidgetItem(Administrative_proceedings_1, ['7'])
def mouseDoubleClickEvent(self, event):
QtWidgets.QTreeWidget.mouseDoubleClickEvent(self, event)
print("Mouse Double Click Event")
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = FirstInstance()
window.setWindowTitle("Основное окно")
window.show()
sys.exit(app.exec_())
Если я нажму на "2", должно быть событие 2, если на "8", должно быть событие 8
В то же время, нажав на А1 или "ава", не должно быть никаких действий. В будущем щелчок по элементу дерева будет ссылаться на другой класс
Ответы (1 шт):
Автор решения: Alexander Chernin
→ Ссылка
У QTreeWidget есть сигнал itemDoubleClicked с двумя параметрами
- item - сам QTreeWidgetItem по которому кликнули
- column - колонка, по которой кликнули
class FirstInstance(QtWidgets.QTreeWidget, QtWidgets.QWidget):
def __init__(self):
...
# Соединяем сигнал со слотом
self.itemDoubleClicked.connect(self.mouseDoubleClickEvent)
def mouseDoubleClickEvent(self, item, column):
print(item.text(column))