Надо сделать анимацию: заставить плавно переместиться виджет из одного положения в другое по прямой.
Использую QPropertyAnimation. С ее помощью двигаю свой виджет.
Код создания анимации
Node* a = new Node(this);
a->show();
QPropertyAnimation* anim = new QPropertyAnimation(a, "geometry", this);
anim->setStartValue(QRect(0, 0, m_rectSize, m_rectSize));
anim->setEndValue (QRect(0, 250, m_rectSize, m_rectSize));
anim->setDuration(500);
anim->start(QPropertyAnimation::DeleteWhenStopped);
И отрисовка внтури Node. (ее часть)
void Node::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
int size = height();
QRect currentRect(0, 0, size, size);
painter.setPen (m_color);
painter.setBrush(m_color);
painter.drawRoundedRect(currentRect, size/5, size/5);
}
Анимация работает. Но! Мерцает. Причем мерцания возникают только в тех частях Node, где есть скругления. Если скругления отключить, что все красиво и без лагов. Но отключать их нельзя.
Есть идеи, как это исправить?
Спасибо
UPD: можно добавить еще то, что при большой скорости анимации (100-200 мкс), т.е. при быстром движении квадратика, мерцает он уже весь.
UPD2: Windows 7 x64