В составе PyQt4 для Python как определить нажмите Ctrl + прокрутка колеса мыши


Я разрабатываю приложение.Я бы хотел, чтобы была возможность увеличивать и уменьшать масштаб. для этого я хотел бы, чтобы программа получала, когда нажимается клавиша управления и одновременно прокручивается мышь, и соответственно увеличивала масштаб (прокрутка вверх для увеличения и прокрутка вниз для уменьшения) я много искал и читал, но нашел только способы получить контрольное нажатие и мышь click-event , а не мышь scroll-event. Я также нашел способ получить прокрутку мыши, но не мог заставить его работать только с контрольным прессом. - и игнорировать все остальные прессы.

Может ли кто-нибудь предложить что-нибудь, чтобы помочь мне???
1 3

1 ответ:

Это немного зависит от структуры вашего приложения. Один из способов получить scroll-events-добавить обработчик wheelEvent в виджет

def wheelEvent(self, QWheelEvent):
    modifiers = QtGui.QApplication.keyboardModifiers()
    if modifiers == QtCore.Qt.ControlModifier:
        # do your processing

Другим подходом может быть установка фильтра событий в компоненте, где вы хотите перехватить события прокрутки с помощью

component.viewport().installEventFilter(self)  

(Возможно, вам придется установить фильтр событий на самом компоненте iso на видовом экране).

И self имеет функцию eventFilter, подобную

 def eventFilter(self, qobject, event):
        if (event.type() == QtCore.QEvent.Wheel) :
            modifiers = QtGui.QApplication.keyboardModifiers()
            if modifiers == QtCore.Qt.ControlModifier:
                #do some scaling stuff
                return True
            return False
        else:
            # standard event processing
            return False

Надеюсь, это поможет.