ставлю фильтр, ловлю все мышиные перемещения. хочу ограничить пермещения курсора при нажатой клавише заданным регионом QRect. сейчас делаю вот так:
mouseMoveEvent( QMouseEvent * pEvent ) {
if( pEvent->pos().x() > m_Rect.x() + m_Rect.width() ) {
printf( "[%s] Old: %d, %d, New: %d, %d", __FUNCTION__, pEvent->pos().x(), pEvent->pos().y(), m_Rect.x() + m_Rect.width(), pEvent->pos().y() );
cursor().setPos( mapToGlobal( QPoint(m_Rect.x() + m_Rect.width(), pEvent->pos().y()) ) );
return;
}
}
этот способ работает, но недостаточно хорошо. например если быстро дергать мышью, курсор будет дергаться из-за того, что 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 не всегда вызывается правильно?