Как правильно переопределить qscintilla mousePressEvent?

У меня есть класс MainWindow и у него есть редактор qscintilla, я хочу добавить слушателя в редактор mousePressEvent

class MainWindow(QtWidgets.QMainWindow, gui.Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.editor.mousePressEvent = self.on_editor_click

    def on_editor_click(self, QMouseEvent):
        // here i want add my code
        return QsciScintilla.mousePressEvent(self, QMouseEvent)

Если я переопределю mousePressEvent - редактор сломается (щелчки мыши не будут работать). Я пытался вызвать первоначальный mousePressEvent, но он не работает, сбой приложения

0 ответов

Назначение метода mousePressEvent другой функции неверно, mousePressEvent не является сигналом, это функция, которая является частью QsciScintilla. Возможное решение - создать персонализированный QsciScintilla, который излучает сигнал, созданный, как показано ниже:

class ClickQsciScintilla(QsciScintilla):
    clicked = QtCore.pyqtSignal()

    def mousePressEvent(self, event):
        self.clicked.emit()
        QsciScintilla.mousePressEvent(self, event)

Затем вы создаете экземпляр ClickQsciScintilla и подключаетесь к этому сигналу:

self.__editor = ClickQsciScintilla()
self.__editor.clicked.connect(self.on_editor_click)

Ваш обработчик:

 def on_editor_click(self):
        print "Editor was clicked!"
Другие вопросы по тегам