Название: переопределение событий QGraphicsScene Отправлено: vux от Апрель 19, 2013, 20:48 У меня в QGraphicsScene может находиться куча элементов.
Для оптимизации решил в элементах не переопределять ничего кроме boundingRect и paint. Меня интересует где лучше переопределять события мыши, клавиатуры - в view или в scene? И в чем вообще отличие отлавливания событий в QGraphicsView и QGraphicsScene? Название: Re: переопределение событий QGraphicsScene Отправлено: GreatSnake от Апрель 20, 2013, 10:52 Меня интересует где лучше переопределять события мыши, клавиатуры - в view или в scene? Это как тебе будет удобнее.И в чем вообще отличие отлавливания событий в QGraphicsView и QGraphicsScene? В любом случае всё события приходят сначала на QGraphicsView::viewport(), фильтруются в QGraphicsView и уже после в случае QGraphicsView::isInteractive() попадают в QGraphicsScene, который доставляет события непосредственно элементам сцены. Т.к. все события интерактивные, то, имхо, оптимизировать здесь особо нечего. PS. Но не стоит забывать про то, что одна сцена может обслуживаться несколькими вью. И вот в этом случае нужно самому определять поведение для каждого вью. Название: Re: переопределение событий QGraphicsScene Отправлено: vux от Апрель 20, 2013, 10:55 1. Спасиба
2. Но я правильно делаю что не переопределяю событий самого QGraphicsItem ? 3. В чем вообще смысл isInteractive ? Название: Re: переопределение событий QGraphicsScene Отправлено: GreatSnake от Апрель 20, 2013, 11:08 2. Но я правильно делаю что не переопределяю событий самого QGraphicsItem ? Я же выше уже сказал, что решать тебе самому.Если ты хочешь, чтобы QGraphicsItem был независимым объектом, дай ему самому обрабатывать события. Цитировать 3. В чем вообще смысл isInteractive ? В случае включения (включёно по умолчанию) события доставляются до QGraphicsItem.Название: Re: переопределение событий QGraphicsScene Отправлено: vux от Апрель 20, 2013, 11:09 2. Но я правильно делаю что не переопределяю событий самого QGraphicsItem ? Я же выше уже сказал, что решать тебе самому.Если ты хочешь, чтобы QGraphicsItem был независимым объектом, дай ему самому обрабатывать события. Цитировать 3. В чем вообще смысл isInteractive ? В случае включения (включёно по умолчанию) события доставляются до QGraphicsItem.Все понял, еще раз спасибо. |