Название: движение мыши по горизонтали Отправлено: vux от Ноября 04, 2011, 12:57 В евент фильтре я проверяю событие MouseMove.
Но мне нужно узнать движеться ли мышь по горизонтали с каким нибуть допуском по вертикали например(-10,+10) Вообщем нужно исполнять код если мыша двигаеться конкретно по горизонтали Как это можно реализовать Название: Re: движение мыши по горизонтали Отправлено: kambala от Ноября 04, 2011, 14:25 надо запоминать старую координату движения и сравнивать ее с текущей (для горизонтали тоже надо небольшое отклонение допускать, например в 1-2 пикселя - сложно вести курсор идеально по горизонтали):
Код
Название: Re: движение мыши по горизонтали Отправлено: AnubiSAD от Ноября 07, 2011, 07:35 Тяжело это все проверить! Запоминать старые координаты как-то выглядит не очень, потому что не знаем в какой момент их надо запоминать. Мышь ведь с разной скоростью перемещаться может. Вот если бы еще как-то скорость перемещения отслеживать. Но что-то чересчур прям сложно. А что конкретно нужно вот этим перемещением по горизонтали отслеживать? Может какое-нибудь попроще условие можно взять?
Название: Re: движение мыши по горизонтали Отправлено: vux от Ноября 07, 2011, 10:14 У меня сейцас код такой
Код
все работает нормально Название: Re: движение мыши по горизонтали Отправлено: kambala от Ноября 07, 2011, 11:51 может так и нужно, но таким образом будет учитываться только движение вниз
Название: Re: движение мыши по горизонтали Отправлено: Igors от Ноября 07, 2011, 12:17 Тяжело это все проверить! Запоминать старые координаты как-то выглядит не очень, потому что не знаем в какой момент их надо запоминать. Мышь ведь с разной скоростью перемещаться может. Вот если бы еще как-то скорость перемещения отслеживать. Но что-то чересчур прям сложно. А что конкретно нужно вот этим перемещением по горизонтали отслеживать? Может какое-нибудь попроще условие можно взять? Иногда делают так:- пользователь "просто" тянет выбранный объект - оба перемещения мыши учитываются - пользователь тянет объект с нажатой клавишей - тогда по первому перемещению выбирается бOльшая X или Y и объект двигается вдоль этой оси Это довольно удобно, клавиша напр Alt. Часто к этому добавлено движение клавишами-стрелочками (просто так 1 пиксель, с shift - напр 10 пикселей) Название: Re: движение мыши по горизонтали Отправлено: Рома от Ноября 08, 2011, 22:41 Думаю, можно еще так сделать:
В классе создать масив из QPoint (последние положения курсора). При каждом движении миши в конец этого масива добавлять новое положение курсора, а потом проверять все ли элементи удовлетворяют такие условия: 1. Разница между максимальным и минимальным Y в этом масиве меньше 20. 2. Все Х либо возростают, либо уменьшаются. Тогда это значит что: если Х возростают то мышь двигается вправо, в другом случае - влево. Если условия не удовлетворяются - удаляются все елементы масива, кроме последнего. Ну и еще, думаю будет неплохо щитать, что мышь действительно двигается по горизонтали, если размер масива не меньше 15. |