Russian Qt Forum

Qt => Общие вопросы => Тема начата: TaleFrance от Март 29, 2021, 20:43



Название: Как анимировать нарисованную фигуру?
Отправлено: TaleFrance от Март 29, 2021, 20:43
Здравствуйте. Прошу помочь. Как можно реализовать простую анимация изменения размера прямоугольника при нажатии на кнопку? Необходимо использовать только QVariantAnimation. В интернете мало примеров работы с ним.


Код:
void MainWindow:: paintEvent(QPaintEvent *)
{
 
    // Алгоритм построения изображения:
 
 // Создаем объект-"художник" и привязываем его к контексту виджета
    QPainter painter(this);
 
    // Включаем сглаживание линий
    painter.setRenderHint(QPainter::Antialiasing, true);
 
        // Маленький прямоугольник (участок цепи)
 
    QBrush br(QColor(0, 255, 0), Qt::DiagCrossPattern);  // Создаём кисть(для заливки фигуры)
    painter.setBrush(br);
 
    painter.drawRect(225, 120, 100, 50);   // Рисуем прямоугольник
 
}
 
 
void MainWindow::on_pushButton_clicked()
{
 
    // Создаём анимацию
 
    QVariantAnimation* animation = new QVariantAnimation(this);
 
      animation->setDuration(5000);
 
   animation->setStartValue(QRect(225, 120, 100, 50)); // Задаём начальное значение
 
    animation->setEndValue(QRect(225, 120, 200, 100));   // Задаём конечное значение
 
 
         connect(animation,
                 &QVariantAnimation::valueChanged, [this](QVariant value)
        {
             //..Не понимаю, что нужно делать
 
 
             update();
         });
 
    // Запускаем анимацию
    animation->start();
 
}