Координаты мыши |
Здравствуйте, гость ( Вход | Регистрация )
Координаты мыши |
epishev |
7.4.2011, 8:35
Сообщение
#1
|
Студент Группа: Участник Сообщений: 89 Регистрация: 23.3.2011 Пользователь №: 2533 Спасибо сказали: 0 раз(а) Репутация: 0 |
Всем привет, подскажите как получить координаты мыши,
относительно виджита, например QGraphicsView, ну или на QGraphicsScene. заранее спасибо! |
|
|
silver47 |
7.4.2011, 8:45
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Всем привет, подскажите как получить координаты мыши, относительно виджита, например QGraphicsView, ну или на QGraphicsScene. заранее спасибо! Цитирую Макса Шлее: "Если же нужно получать события перемещения указателя мыши, то тогда нужно воспользоваться методом setMouseTracking() класса QWidget, передав ему в параметре значение true." "Для определения местоположения указателя мыши в момент возникновения СОбыТИЯ МОЖНО ВОСПОЛЬЗОВаТЬСЯ Методами globalX(), globalY(), х() И у (), которые возвращают целые значения. Также можно воспользоваться методами pos о или giobaiPos о. Метод pos о класса QMouseEvent возвращает позицию указателя мыши в момент наступления события (позиция относительно левого верхнего угла виджета). Если нужна абсолютная позиция (относительно левого верхнего угла экрана), то ее получают с помощью метода giobaiPos (). " ну и пример из той же книги, setMouseTracking(true) не установлено, поэтому координаты отслеживаются лишь при нажатой кнопе. В фале main.cpp сразу же после создания виджета укажите и будет щасте.
Сообщение отредактировал silver47 - 7.4.2011, 8:52
Прикрепленные файлы
|
|
|
wiz29 |
7.4.2011, 8:50
Сообщение
#3
|
Старейший участник Группа: Участник Сообщений: 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
Сообщение
#4
|
Студент Группа: Участник Сообщений: 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
Сообщение
#5
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
Распишите позжалуйста более подробно... Какой из вариантов конкретно? если рассматривать "оторванную" от обработки событий реализацию, то она будет выглядеть примерно следующим образом:
Либо ты можешь пронаследоваться от QGraphicsView:
Сообщение отредактировал wiz29 - 7.4.2011, 11:52 |
|
|
RazrFalcon |
7.4.2011, 13:13
Сообщение
#6
|
Zombie Mod Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: 212 |
|
|
|
Текстовая версия | Сейчас: 29.11.2024, 22:26 |