T
T
TaleFrance2021-03-28 15:37:54
Qt
TaleFrance, 2021-03-28 15:37:54

Qt. How to animate a shape on button click?

Hello. Please help. How can I implement a simple animation of changing the size of a rectangle when a button is clicked? Only QVariantAnimation needs to be used. There are few examples of working with it on the Internet.

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();
 
}

Answer the question

In order to leave comments, you need to log in

1 answer(s)
A
Alexander Ananiev, 2021-03-28
@SaNNy32

//..I don't understand what to do

Redraw the rectangle with the size received in the event.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question