Как перехватить событие 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))

→ Ссылка