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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: переопределение событий QGraphicsScene  (Прочитано 2853 раз)
vux
Гость
« : Апрель 19, 2013, 20:48 »

У меня в QGraphicsScene может находиться куча элементов.
Для оптимизации решил в элементах не переопределять ничего кроме boundingRect и paint.
Меня интересует где лучше переопределять события мыши, клавиатуры - в view или в scene?
И в чем вообще отличие отлавливания событий в QGraphicsView и QGraphicsScene?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Апрель 20, 2013, 10:52 »

Меня интересует где лучше переопределять события мыши, клавиатуры - в view или в scene?
И в чем вообще отличие отлавливания событий в QGraphicsView и QGraphicsScene?
Это как тебе будет удобнее.
В любом случае всё события приходят сначала на QGraphicsView::viewport(), фильтруются в QGraphicsView
и уже после в случае QGraphicsView::isInteractive() попадают в QGraphicsScene, который доставляет события непосредственно элементам сцены.
Т.к. все события интерактивные, то, имхо, оптимизировать здесь особо нечего.

PS. Но не стоит забывать про то, что одна сцена может обслуживаться несколькими вью. И вот в этом случае нужно самому определять поведение для каждого вью.
« Последнее редактирование: Апрель 20, 2013, 10:54 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
vux
Гость
« Ответ #2 : Апрель 20, 2013, 10:55 »

1. Спасиба
2. Но я правильно делаю что не переопределяю событий самого QGraphicsItem ?
3. В чем вообще смысл isInteractive ?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Апрель 20, 2013, 11:08 »

2. Но я правильно делаю что не переопределяю событий самого QGraphicsItem ?
Я же выше уже сказал, что решать тебе самому.
Если ты хочешь, чтобы QGraphicsItem был независимым объектом, дай ему самому обрабатывать события.

Цитировать
3. В чем вообще смысл isInteractive ?
В случае включения (включёно по умолчанию) события доставляются до QGraphicsItem.
Записан

Qt 5.11/4.8.7 (X11/Win)
vux
Гость
« Ответ #4 : Апрель 20, 2013, 11:09 »

2. Но я правильно делаю что не переопределяю событий самого QGraphicsItem ?
Я же выше уже сказал, что решать тебе самому.
Если ты хочешь, чтобы QGraphicsItem был независимым объектом, дай ему самому обрабатывать события.

Цитировать
3. В чем вообще смысл isInteractive ?
В случае включения (включёно по умолчанию) события доставляются до QGraphicsItem.

Все понял, еще раз спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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