Маленькое замечание - enterEvent рассчитывается при наведении на само окно. Рамка же относится к оконному менеджеру. Т.е. если использовать enterEvent пользователь сможет навести указатель на рамку и ничего не будет? Поправьте меня, если я неправ.
И вдогонку.
QCursor::pos возвращает курсор мыши.
Таймер даёт возможность проверять его положение на каждый момент времени.
geometry тебе даёт размеры и положение окна.
Move двигает окном.
Собираем всё вместе - профит.
PS хотя кто-то назовёт мой способ плохим, я думаю так