crossplatform.ru

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

> Координаты мыши
epishev
  опции профиля:
сообщение 7.4.2011, 8:35
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 89
Регистрация: 23.3.2011
Пользователь №: 2533

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем привет, подскажите как получить координаты мыши,
относительно виджита, например QGraphicsView,

ну или на QGraphicsScene.

заранее спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
wiz29
  опции профиля:
сообщение 7.4.2011, 8:50
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Добрый день, есть несколько вариантов. Можно обработать несколько событий для QGraphicsScene или QGraphicsView установив eventFilter для соответствующих объектов, либо с помощью глобальной функции QCursor::pos() - которая возвращает координаты курсора мыши в глобальной системе и трансформировать данную точку сначала в систему координат QGraphicsView объекта методом QGraphicsView::mapFromGlobal, затем, полученный результат, в координаты сцены методом QGraphicsView::mapToScene.
Если же перехватывать события через eventFilter, тогда нужно перехватить событие QEvent::MouseMove , в данном событии содержаться данные о положении курсора с системе координат виджета. либо перехватить событие QEvent::GraphicsSceneMouseMove соответственно получим событие содержащее координаты курсора в системе координат сцены. Ну и третий способ, это пронаследоваться для нужного класса (QGraphicsView или QGraphicsScene) и переопределить соответствующие виртуальные методы.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
epishev
  опции профиля:
сообщение 7.4.2011, 11:14
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 89
Регистрация: 23.3.2011
Пользователь №: 2533

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(wiz29 @ 7.4.2011, 9:50) *
Добрый день, есть несколько вариантов. Можно обработать несколько событий для QGraphicsScene или QGraphicsView установив eventFilter для соответствующих объектов, либо с помощью глобальной функции QCursor::pos() - которая возвращает координаты курсора мыши в глобальной системе и трансформировать данную точку сначала в систему координат QGraphicsView объекта методом QGraphicsView::mapFromGlobal, затем, полученный результат, в координаты сцены методом QGraphicsView::mapToScene.
Если же перехватывать события через eventFilter, тогда нужно перехватить событие QEvent::MouseMove , в данном событии содержаться данные о положении курсора с системе координат виджета. либо перехватить событие QEvent::GraphicsSceneMouseMove соответственно получим событие содержащее координаты курсора в системе координат сцены. Ну и третий способ, это пронаследоваться для нужного класса (QGraphicsView или QGraphicsScene) и переопределить соответствующие виртуальные методы.


Распишите позжалуйста более подробно...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 2.12.2024, 2:01