crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Ограничить перемещение курсора
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
ssoft Дата 5.12.2011, 7:06
  Нужно обязательно переопределить событие leaveEvent
Оно возникает при попытке курсора мыши покинуть widget.
Delaar Дата 4.12.2011, 23:36
  Благодарю всех отписавшихся. Попробовал фильтры, не заработало как надо (курсор таки мог вылететь за пределы дозволенного).
Решил поставить к виджету таймер, и в обработчике, если нужно - задавать координаты курсора. Таки получилось, как хотел.
По ссылке ниже - проект. Смотреть battlescrollarea.

http://webfile.ru/5708617
Dovgon Дата 4.12.2011, 9:26
  так просто не получится, надо делать в 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 ) );

где xPosOld предвидущий globalX т.к движение не обязательно на 1 pix.
ilyabvt Дата 3.12.2011, 18:36
 
Цитата
но при быстром - выходит за его пределы.

Проблема связана с тем что не успевает генерироваться событие. Можно решить путем установки EventFilter на приложение (QApplication), тогда можно будет контролировать координаты мыши даже если она успеет выйти за пределы виджета.
http://doc.qt.nokia.com/latest/eventsandfilters.html
http://doc.qt.nokia.com/latest/qobject.htm...tallEventFilter
Delaar Дата 3.12.2011, 17:18
  Cюда прикрепить не смог, ссылка: http://webfile.ru/5706577
Там все проект, проблема в battlefieldbutton.cpp

Дополнение...пока кое-как ограничивается только движение вправо от центра scrollarea.
Delaar Дата 3.12.2011, 17:15
  Cюда прикрепить не смог, ссылка: http://webfile.ru/5706577
Там все проект, проблема в battlefieldbutton.cpp
Dovgon Дата 3.12.2011, 16:37
  приведи код.
Delaar Дата 3.12.2011, 15:55
  Добрый день, форумчане. Подскажите, каким образом разрешить курсору перемещение
в пределах одного виджета.
На данный момент пробую подход с SetMouseTracking(true) у нужного виджета
и обработчика mouseMoveEvent, где проверяются текущие координаты курсора и в случае
их выхода за пределы виджета - они изменяются на допустимые.
Возникает проблема, которую решить не могу: при медленном движении мыши курсор
действительно удерживается в пределах виджета, но при быстром - выходит за его пределы.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.4.2024, 3:35