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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QGraphicsView анимация с "артефактами"  (Прочитано 3769 раз)
vregess
Гость
« : Август 20, 2012, 17:42 »

Понадобилась анимировать QGraphicsWidget.
Но в результате анимация получается с "артефактами": видно, как отрисовываются части виджета.
Не смог сделать нормальный скриншот, поэтому нарисовал, как примерно выглядит.

Делаю так:

Инициализация QGraphicsView:
Код
C++ (Qt)
   if (useGL)
   {
       QGLWidget *glw = new QGLWidget(QGLFormat(QGL::SampleBuffers));
       setAutoFillBackground(false);
       setCacheMode(QGraphicsView::CacheNone);
       setViewport(glw);
   }
   else
   {
       setViewport(new QWidget);
       setCacheMode(QGraphicsView::CacheBackground);
       setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate);
   }
 
   setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
   setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
   setFrameStyle(QFrame::NoFrame);
   setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
 

Сам объект анимации (красный квадрат):
Код
C++ (Qt)
   QGraphicsWidget *w = new  QGraphicsWidget;
   QPalette p = w->palette();
   p.setColor(QPalette::Window, Qt::red);
   w->setPalette(p);
   w->setAutoFillBackground(true);
   w->resize(100, 100);
 

Анимация:
Код
C++ (Qt)
   QPropertyAnimation *a= new QPropertyAnimation(item, "x", parent);
   a->setEasingCurve(QEasingCurve::OutCubic);
   a->setDuration(1000);
   a->setStartValue(start);
   a->setEndValue(end);
 

Почему так коряво отрисовывается анимация простого объекта, мб надо что-нибудь подкрутить?
Qt 4.8.2 (x32), Win7 (x64)
Спасибо.
Прикрепляю тестовый пример.
« Последнее редактирование: Август 20, 2012, 18:05 от ck » Записан
_OLEGator_
Гость
« Ответ #1 : Август 20, 2012, 19:08 »

Все работает, никаких артефактов.
Qt 4.8.2, Win7 x64, Visual Studio 2010
Записан
vregess
Гость
« Ответ #2 : Август 20, 2012, 19:20 »

Хм. Квадрат двигается плавно? А с OpenGL? Там в main.cpp есть лишняя строчка use_gl = false.
Может быть у меня проблемы с железом, не знаю, что и думать. qtdemo вроде работает более гладко на глаз..
Мб это из-за контрастных цветов?
Записан
_OLEGator_
Гость
« Ответ #3 : Август 20, 2012, 19:44 »

В обоих вариантах все как и должно быть.
Записан
vregess
Гость
« Ответ #4 : Август 20, 2012, 19:58 »

Спасибо, попробую на других компах.

PS "как и должно быть" - это как? все некрасиво и вывриглазно?)
Записан
_OLEGator_
Гость
« Ответ #5 : Август 20, 2012, 22:54 »

Как должно быть - это значит анимация плавная, соответственно выбранным настройкам, никаких артефактов не наблюдается.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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