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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: QGraphicsScene (фон + виджет поверх). Тормоза  (Прочитано 14414 раз)
Ground
Гость
« Ответ #15 : Сентябрь 08, 2011, 13:29 »

И снова здравствуйте! Подниму свою тему, т.к. вопрос практически аналогичный.
Цитировать
Имеется 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 и выше.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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