Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: alexeyvanzhula от Май 18, 2014, 21:57



Название: Модификация поведения мыши
Отправлено: alexeyvanzhula от Май 18, 2014, 21:57
Не могу поменять поведение мыши. Вобщем программа левая закрытая но Qt-шная и с питоном, поэтому вклиниваюсь в нее с помощью PySide.
В этой программе есть функция вызываемая по Shift+LMB. Я хочу чтобы она временно вызывалась просто по LMB. Поскольку временно то я сначала инсталлирую eventFilter потом убираю. Код евент фильтра:
Код
Python
from PySide import QtGui as qtg
from PySide import QtCore as qtc
 
class EventFilterClass( ui.qtc.QObject ):
 
   def eventFilter( self, obj, event ):
       etype = event.type()
 
       if etype == qtc.QEvent.MouseButtonPress:
           button = event.button()
           mods = event.modifiers()
 
           if button == qtc.Qt.LeftButton and mods == qtc.Qt.NoModifier:
               custom_event = qtg.QMouseEvent( etype, event.pos(), button, button, qtc.Qt.ShiftModifier)
               self.app.sendEvent( obj, custom_event )
               return True
 
       elif etype == qtc.QEvent.MouseButtonRelease:
           button = event.button()
           mods = event.modifiers()
 
           if button == qtc.Qt.LeftButton and mods == qtc.Qt.NoModifier:
               custom_event = qtg.QMouseEvent( etype, event.pos(), button, button, qtc.Qt.ShiftModifier)
               self.app.sendEvent( obj, custom_event )
               return True
 
       elif etype == qtc.QEvent.MouseMove:
           button = event.button()
           mods = event.modifiers()
 
           if button == qtc.Qt.LeftButton and mods == qtc.Qt.NoModifier:
               custom_event = qtg.QMouseEvent( etype, event.pos(), button, button, qtc.Qt.ShiftModifier)
               self.app.sendEvent( obj, custom_event )
               return True
 
       return False

Что я делаю не так ???


Название: Re: Модификация поведения мыши
Отправлено: Bepec от Май 18, 2014, 22:37
Как вариант вы вклиниваетесь не там :) Фильтр то вообще вызывается?


Название: Re: Модификация поведения мыши
Отправлено: alexeyvanzhula от Май 18, 2014, 22:52
Конечно вызывается. В отдельной функции инcталлируется в QApplication.instance(). После отработки убирается (removeEventFilter)


Название: Re: Модификация поведения мыши
Отправлено: alexeyvanzhula от Май 18, 2014, 22:56
В других ситуациях фильтр установленый в QApplication отрабатывает нормально


Название: Re: Модификация поведения мыши
Отправлено: Bepec от Май 19, 2014, 07:10
Никто не может сказать, что там в коде наворочено и как сделано. Всё вплоть до платформо-зависимых функций. Увы.