Координаты мыши |
Здравствуйте, гость ( Вход | Регистрация )
Координаты мыши |
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 |
Добрый день, есть несколько вариантов. Можно обработать несколько событий для QGraphicsScene или QGraphicsView установив eventFilter для соответствующих объектов, либо с помощью глобальной функции QCursor::pos() - которая возвращает координаты курсора мыши в глобальной системе и трансформировать данную точку сначала в систему координат QGraphicsView объекта методом QGraphicsView::mapFromGlobal, затем, полученный результат, в координаты сцены методом QGraphicsView::mapToScene. Если же перехватывать события через eventFilter, тогда нужно перехватить событие QEvent::MouseMove , в данном событии содержаться данные о положении курсора с системе координат виджета. либо перехватить событие QEvent::GraphicsSceneMouseMove соответственно получим событие содержащее координаты курсора в системе координат сцены. Ну и третий способ, это пронаследоваться для нужного класса (QGraphicsView или QGraphicsScene) и переопределить соответствующие виртуальные методы. Распишите позжалуйста более подробно... |
|
|
wiz29 |
7.4.2011, 11:50
Сообщение
#4
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
Распишите позжалуйста более подробно... Какой из вариантов конкретно? если рассматривать "оторванную" от обработки событий реализацию, то она будет выглядеть примерно следующим образом:
Либо ты можешь пронаследоваться от QGraphicsView:
Сообщение отредактировал wiz29 - 7.4.2011, 11:52 |
|
|
Текстовая версия | Сейчас: 2.12.2024, 1:41 |