Форум вопросов и ответов

Форум вопросов и ответов (https://www.otvetnemail.ru/)
-   Новый архив 2 (https://www.otvetnemail.ru/novyj-arhiv-2-812/)
-   -   QGraphicsScene: ненужная рассылка событий к QGraphicsItems (https://www.otvetnemail.ru/novyj-arhiv-2-812/qgraphicsscene-nenuzhnaya-rassylka-sobytij-k-qgraphicsitems-331916/)

Guest 30.09.2011 09:42

QGraphicsScene: ненужная рассылка событий к QGraphicsItems
 
Имеется сцена с достаточно большим количеством элементов. Под виндой при определенных ситуациях стали наблюдать дикие тормоза.При внимательном наблюдении выяснилось, что при смене фокуса на главном окне cpu грузится по-полной. Причем никакой перерисовки в это время не делается. Т.е. поднимаем диалог и тачка встаёт в ступор! При дальнейших раскопках выяснилось, что при изменении фокуса top-level окна QGraphicsScene::event() вызывает для каждого видимого элемента QGraphicsItem::sceneEvent(). Причём сцена по сути read-only, т.к. никакая обработка событий для отдельно взятого элемента не требуется. Получается, что публичными средствами API запретить такое безобразие никак нельзя. Единственным решением оказалось перегрузить QGraphicsScene::event(). Абсолютно непонятна такая политика троллей. И что интересно, непонятно, почему так всё проседает именно под виндой. Под линуксом всё гладко. Пробежался по исходникам и ничего platform-specific не обнаружил. У кого есть мысли насчёт всего этого?


Часовой пояс GMT, время: 04:55.


© www.otvetnemail.ru - Форум вопросов и ответов.