Название: Как заблокировать курсор в заданной области? Отправлено: once_again_abc от Октябрь 04, 2011, 05:57 ставлю фильтр, ловлю все мышиные перемещения. хочу ограничить пермещения курсора при нажатой клавише заданным регионом QRect. сейчас делаю вот так:
Код: mouseMoveEvent( QMouseEvent * pEvent ) { этот способ работает, но недостаточно хорошо. например если быстро дергать мышью, курсор будет дергаться из-за того, что mouseMoveEvent слишком поздно делает cursor().setPos: [4648] [::mouseMoveEvent] Old: 812, 159, New: 808, 159 [4648] [::mouseMoveEvent] Old: 819, 159, New: 808, 159 [4648] [::mouseMoveEvent] Old: 854, 158, New: 808, 158 как "железно" заблокировать курсор в некоторой области так, чтобы скорость перемещения мыши не влияла на ситуацию? т.е. в моем данном примере курсор оказался в позициях 812, 819 и 854 хотя я ограничиваю его позицией 808. получается что mouseMoveEvent не всегда вызывается правильно? Название: Re: Как заблокировать курсор в заданной области? Отправлено: Bepec от Октябрь 04, 2011, 07:31 Насколько я понимаю, mouseMoveEvent вызывается тогда, когда событие уже произошло.
И к тому же опять таки по коду, ты не ставишь фильтр событий, а ловишь просто перемещение мыши на самой форме. Можешь обратить внимание на QObject::eventFilter( QObject * watched, QEvent * event). По идее должно помочь, но я не использовал ниразу. PS mouseMoveEvent вызывается ПОСЛЕ перемещения, значит работает правильно :) |