Понадобилась анимировать 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)
Спасибо.
Прикрепляю тестовый пример.