Спасибо!
PS. Вот кусок кода как я делаю.
void CMovie::SetPictureSequence(const std::vector<QImage>& roImages)
{
m_roImages = roImages;
m_nFramesCount = m_roImages.size();
for (std::vector<QImage>::const_iterator itImage = m_roImages.begin(); itImage != m_roImages.end(); ++itImage)
{
m_roImageMasks.push_back(QPixmap::fromImage(*itImage).mask());
}
}
void CMovie::paintEvent(QPaintEvent *pEvent)
{
Q_UNUSED(pEvent);
QPainter oWidgetPainter(this);
if (m_nCurrentFrame < 0 || m_nCurrentFrame >= m_nFramesCount) return;
//рисуем картинку
if (!m_roImages.at(m_nCurrentFrame).isNull())
{
this->clearMask();
this->setMask(m_roImageMasks.at(m_nCurrentFrame));
oWidgetPainter.drawImage(0, 0, m_roImages.at(m_nCurrentFrame));
}
}
void CMovie::OnTimer()
{
if (m_nCurrentFrame == m_nFramesCount - 1)
{
m_nCurrentFrame = 0;
emit movieFinished();
}
else ++m_nCurrentFrame;
this->repaint();
}
Сигнал movieFinished соединен со слотом начала анимации (останов таймера у которого слот OnTimer, установка счетчика на 1-й кадр, запуск таймера)