Добрый день, форумчане. Подскажите, каким образом разрешить курсору перемещение
в пределах одного виджета.
На данный момент пробую подход с SetMouseTracking(true) у нужного виджета
и обработчика mouseMoveEvent, где проверяются текущие координаты курсора и в случае
их выхода за пределы виджета - они изменяются на допустимые.
Возникает проблема, которую решить не могу: при медленном движении мыши курсор
действительно удерживается в пределах виджета, но при быстром - выходит за его пределы.
приведи код.
Cюда прикрепить не смог, ссылка: http://webfile.ru/5706577
Там все проект, проблема в battlefieldbutton.cpp
Cюда прикрепить не смог, ссылка: http://webfile.ru/5706577
Там все проект, проблема в battlefieldbutton.cpp
Дополнение...пока кое-как ограничивается только движение вправо от центра scrollarea.
так просто не получится, надо делать в MainWindow mouseMoveEvent, после сигналом передовать в BattleFieldButton передовать QMouseEvent *mouse::globalX();
В самом BattleFieldButton слоте делать гдето так
int xPos=parent_widget->pos().x()+parent_widget->rect().width(); пробуй.
if (globalX >= xPos)
QCursor::setPos(kursor - QPoint(globalX-xPosOld+2,0 ) );
Благодарю всех отписавшихся. Попробовал фильтры, не заработало как надо (курсор таки мог вылететь за пределы дозволенного).
Решил поставить к виджету таймер, и в обработчике, если нужно - задавать координаты курсора. Таки получилось, как хотел.
По ссылке ниже - проект. Смотреть battlescrollarea.
http://webfile.ru/5708617
Нужно обязательно переопределить событие leaveEvent
Оно возникает при попытке курсора мыши покинуть widget.
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)