crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> MouseMoveEvent, вопрос про события
quarz
  опции профиля:
сообщение 8.7.2010, 17:59
Сообщение #1


Студент
*

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

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




Репутация:   0  


есть главное окно
class MyProgram : public QMainWindow
на которое с помощью дизайнера вставлен QGraphicsView.
Мне надо ловить события мыши и колеса прокрутки, для перемещения графики по сцене.

Делаю это так:
void MyProgram::mousePressEvent (QMouseEvent *event){}
void MyProgram::mouseReleaseEvent (QMouseEvent *event){}
void MyProgram::mouseMoveEvent(QMouseEvent *event){}
void MyProgram::wheelEvent(QWheelEvent *event){}


Если кликнуть мышью по форме (не по GraphicsView), то все события срабатывают.
А если кликнуть над GraphicsView и потаскать мышь с зажатой кнопкой, то MousePress сработает, а MouseMove - нет.
Почему?
Как будто GraphicsView не передает событие родителю, но почему тогда MousePress срабатывает?
Что-то я в этих событиях еще не разобрался...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 8.7.2010, 18:30
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(quarz @ 8.7.2010, 21:59) *
Как будто GraphicsView не передает событие родителю
собственно это штатное поведение, если обработчик события у виджета есть, то он его и принял, дальше оно пойдёт только в случае если обработчик события выставит флаг "ignore".
для того чтобы ловить чужое событие нужно ставить "фильтр событий", смотри QObject::installEventFilter(), там приведён пример как это делать.


П.С. а вообще каркас графического представления уже имеет реализацию перетаскивания элементов, нужно только элементу соответствующий флаг установить
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
quarz
  опции профиля:
сообщение 8.7.2010, 23:23
Сообщение #3


Студент
*

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

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




Репутация:   0  


Спасибо, Юрий!
Действительно, в графическое представление встроен функционал для перетаскивания. За это отвечает флаг QGraphicsItem::ItemIsMovable
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 19.9.2019, 23:49