У вьюхи переопределен drawBackground, в нем отрисовывается содержимое svg с пом. QSvgRenderer
На сцене n-ное кол-во QGraphicsSvgItem'ов, которые в зависимости от определенных событий (нажатия мыхой) изменяются с пом. setElementId подобным образом:
...
currentTile->setElementId(boardLayout.tileId);
QRectF r = currentTile->mapRectToScene(currentTile->boundingRect());
scene->invalidate(r);
view->update(view->mapFromScene(r));
...
Проблема в следующем:
Собственно сам итем изменяется на новый, но в (полу)прозрачных областях получаются артефакты. При инвалидации сцены полностью, этих артефактов не наблюдается, но меня не устраивает скорость реакции в этом случая. Изменения итема происходит в некоторых случаях вплоть до секунды, что недопустимо. Так же подобные артефакты отсутствуют при установке QGraphicsSvgItem-background'а вместо drawBackground. Но такой вариант меня тоже не устраивает.
Как решить эту проблему?
з.ы.
вьюха не кешируется
view->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
view->setCacheMode(QGraphicsView::CacheNone);
итемы аналогично
tile->setCacheMode(QGraphicsItem::NoCache);
Qt-4.8.4 -> Windows7(mingw-4.7) / Linux x86(gcc-4.8.1)