Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: TaleFrance от Март 26, 2021, 11:42



Название: Анимация простого прямоугольника при нажатии на кнопку. QVariantAnimation. QRect
Отправлено: TaleFrance от Март 26, 2021, 11:42
Здравствуйте. Прошу помочь. Как можно реализовать простую анимация изменения размера прямоугольника при нажатии на кнопку? Необходимо использовать только 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();

}