2015-03-29 5 views
0

Я программирую свою первую 2D-игру в Qt.Qt mouseMoveEvent - отслеживание положения мыши

У меня есть QWidged, где я рисую свою игру (изометрический вид). Когда мышь входит в рамку виджета, она перемещает вид карты (как в каждой стратегической игре ...).

И вот моя проблема ... Я отслеживаю положение мыши с помощью mouseMoveEvent, но он срабатывает только при перемещении мыши (только при изменении положения). Таким образом, карта перемещается только тогда, когда я перемещаю мышь на границах. Если мышь стоит неподвижно, карта не перемещается (mouseMoveEvent не запускается). И я понятия не имею, как это решить. Это раздражает, когда вы пытаетесь воспроизвести его.

Это мой первый пост здесь .. и я надеюсь, что я объяснил свою проблему ясно :)

Редактировать (немного уточнить):
Представьте себе: вы хотите переместить карту. Таким образом, вы перемещаете мышь на край экрана (QWidget), но в тот момент, когда вы останавливаете мышь, карта также перестает двигаться. Но мышь все еще находится на краю экрана. То, что я хочу сделать, - это то, что карта по-прежнему будет двигаться после того, как мышь остановится.

+0

Попробуйте добавить строку, чтобы уточнить, что вы действительно хотите. IE: «Я бы хотел ... это ... и это». – moffeltje

+0

вы хотите отслеживать движение мыши ... когда мышь не движется? Разве вы не заметили, что что-то испорчено? – UmNyobe

+0

Представьте себе: вы хотите переместить карту. Таким образом, вы перемещаете мышь на край экрана (QWidget), но в тот момент, когда вы останавливаете мышь, карта также перестает двигаться. Но мышь все еще находится на краю экрана. Что я хочу сделать, так это то, что карта по-прежнему будет перемещаться после остановки мыши на краю – Pyro

ответ

0

Вы можете создать QPropertyAnimation для координат и начать/остановить его, когда мышь перемещается к границе от виджета. Или вы можете вспомнить текущее состояние («изменение x на -1 каждые 100 мс, изменение y на 0») и вызов некоторого слота, который выполняет реальное перемещение с помощью QTimer.

+0

Thx для идеи. Я решил это с QTimer и помню текущее состояние, как вы сказали, и он работает хорошо :) – Pyro

Смежные вопросы