Russian Qt Forum

Qt => Общие вопросы => Тема начата: AlphaGh0St от Ноябрь 13, 2012, 23:05



Название: Перемещение окна при наведении мыши
Отправлено: AlphaGh0St от Ноябрь 13, 2012, 23:05
Всем привет!
Подскажите, как сделать так, чтобы главное окно программы (QMainWindow) перемещалось при наведении на него курсора мыши?

Понятное дело, что нужно переопределять событие enterEvent(), рассчитывать координаты и перемещать окно методом move().

Проблема заключается в том, что нужно заставить окно "убегать" от курсора.
Предположим, навели курсор снизу, окно должно переместиться выше.
Навели курсор сверху, окно переместилось вниз.
Навели курсор слева, окно переместилось вправо.
Навели курсор справа, окно переместилось влево.

Благодарю.


Название: Re: Перемещение окна при наведении мыши
Отправлено: Bepec от Ноябрь 14, 2012, 06:55
Маленькое замечание - enterEvent рассчитывается при наведении на само окно. Рамка же относится к оконному менеджеру. Т.е. если использовать enterEvent пользователь сможет навести указатель на рамку и ничего не будет? Поправьте меня, если я неправ.

И вдогонку.

QCursor::pos возвращает курсор мыши.

Таймер даёт возможность проверять его положение на каждый момент времени.

geometry тебе даёт размеры и положение окна.

Move двигает окном.

Собираем всё вместе - профит.

PS хотя кто-то назовёт мой способ плохим, я думаю так :)