Russian Qt Forum
Сентябрь 30, 2024, 12:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Модификация поведения мыши  (Прочитано 2101 раз)
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

Что я делаю не так Непонимающий
Записан
Bepec
Гость
« Ответ #1 : Май 18, 2014, 22:37 »

Как вариант вы вклиниваетесь не там Улыбающийся Фильтр то вообще вызывается?
Записан
alexeyvanzhula
Гость
« Ответ #2 : Май 18, 2014, 22:52 »

Конечно вызывается. В отдельной функции инcталлируется в QApplication.instance(). После отработки убирается (removeEventFilter)
Записан
alexeyvanzhula
Гость
« Ответ #3 : Май 18, 2014, 22:56 »

В других ситуациях фильтр установленый в QApplication отрабатывает нормально
Записан
Bepec
Гость
« Ответ #4 : Май 19, 2014, 07:10 »

Никто не может сказать, что там в коде наворочено и как сделано. Всё вплоть до платформо-зависимых функций. Увы.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.102 секунд. Запросов: 20.