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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Особенности работы с setMouseTracking или с отслеживанием мыши  (Прочитано 13902 раз)
Old
Джедай : наставник для всех
*******
Online Online

Сообщений: 4350



Просмотр профиля
« Ответ #15 : Июнь 08, 2014, 11:43 »

Перекрывать mouseMoveEvent (на том основании что "это ООП - и значит хорошо") в моем примере явно глупо - придется наследоваться для решения частной/мелкой задачи.
А кто заставляет что-то перекрывать? Более того, часто это невозможно сделать.

Предлагаете фильтр - но он здесь не универсален. Для левого айтема надо отследить "мышь на правом крае", для правого - наоборот. А отследив - что делать?
Это потому, что вы не знаете как можно сделать универсально.
Отслеживать перемещение мыши ловя соответствующие события самое естественное решение. А таймер здесь это костыль.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #16 : Июнь 08, 2014, 11:56 »

Отслеживать перемещение мыши ловя соответствующие события самое естественное решение. А таймер здесь это костыль.
Мое мнение наоборот, но не вижу смысла препираться - слишком мелкая тема  Улыбающийся Умолкаю
Записан
Old
Джедай : наставник для всех
*******
Online Online

Сообщений: 4350



Просмотр профиля
« Ответ #17 : Июнь 08, 2014, 17:31 »

Техника "по таймеру" существует с незапамятных времен. Не скажу что она идеальна - но возможна. Многие классы Qt ее тоже используют, напр хоть QAbstractItemView для autoScroll (недавно там лазил)
Не знаю что вы понимаете под "техникой по таймеру", но таймеры действительно существуют очень давно. И используются там, где нужно выполнять действия через заданный интервал времени. Как, кстати, и в случае с автоскроллом - эта операция напрямую зависит от времени, потому что служит для плавной анимации скроллирования данных.
А вот координаты мыши по таймеру проверять избыточно, т.к. для этого генерируется специальное событие. Т.е. если мышку никто не трогает, то и события никакие не генерируются и обработки никакой не производится. В отличие от...

А с использованием фильтров событий это вообще делается в несколько строк кода.
« Последнее редактирование: Июнь 08, 2014, 17:46 от Old » Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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