И снова здравствуйте! Подниму свою тему, т.к. вопрос практически аналогичный.
Имеется QGraphicsScene, унаследованный QGraphicsView и небольшой виджет, перерисовывающийся каждые 40мс. В QGraphicsView в качестве фона установлено SVG изображение (через drawBackground). Виджет добавлен в сцену через addWidget().
Вот код унаследованного QGraphicsView:
C++ (Qt)
graphicsView::graphicsView(QGraphicsScene* scene, QWidget* parent) : QGraphicsView(scene, parent)
{
setRenderHint(QPainter::Antialiasing);
//setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));
setCacheMode(QGraphicsView::CacheBackground);
renderer = new QSvgRenderer(this);
renderer->load(QString("map.svg"));
setSceneRect(renderer->viewBoxF());
}
void graphicsView::drawBackground(QPainter* painter, const QRectF&)
{
renderer->render(painter, renderer->viewBoxF());
}
И проблема сейчас такого рода: при разворачивании QGraphicsView на весь экран и включенной опции setDragMode(QGraphicsView::ScrollHandDrag) - изображение двигается рывками, причем очень заметными. Проблема решается с помощью setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers))), но в этом случае значительно нагружается процессор. Как можно побороть эти проблемы?
Минимальный проект с представленной проблемой прилагаю. Проблема наблюдается при разрешении 1280х1024 и выше.