Russian Qt Forum
Ноябрь 25, 2024, 15:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Перемещение окна при наведении мыши  (Прочитано 3104 раз)
AlphaGh0St
Гость
« : Ноябрь 13, 2012, 23:05 »

Всем привет!
Подскажите, как сделать так, чтобы главное окно программы (QMainWindow) перемещалось при наведении на него курсора мыши?

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

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

Благодарю.
Записан
Bepec
Гость
« Ответ #1 : Ноябрь 14, 2012, 06:55 »

Маленькое замечание - enterEvent рассчитывается при наведении на само окно. Рамка же относится к оконному менеджеру. Т.е. если использовать enterEvent пользователь сможет навести указатель на рамку и ничего не будет? Поправьте меня, если я неправ.

И вдогонку.

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

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

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

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

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

PS хотя кто-то назовёт мой способ плохим, я думаю так Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.053 секунд. Запросов: 21.