как сделать часть кода в виде функции

есть "функция" движения прямоугольника, но в main:

//main.cpp
#include "rectangle.h"

#include <QApplication>
#include <QPropertyAnimation>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QWidget w;
    w.resize({800,600});
    w.show();

    //начало движения
    auto* r=new rectangle(&w);
    r->resize({50,50});
    r->show();
    
    if(auto* a =new QPropertyAnimation(r, "pos"))
    {
        a->setDuration(3000);
        a->setStartValue(QPoint{0,0});
        a->setEndValue(QPoint{500,500});
        a->start(QAbstractAnimation::DeleteWhenStopped);
    }

    return a.exec();
}

Как можно записать данное движение в классе rectangle в виде функции?

//rectangle.h
#pragma once

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class rectangle; }
QT_END_NAMESPACE

class rectangle : public QWidget
{
    Q_OBJECT

public:
    rectangle(QWidget *parent = nullptr);
    ~rectangle();

    void paintEvent(QPaintEvent *e);
    

private:
    Ui::rectangle *ui;
};




//rectangle.cpp
#include "rectangle.h"
#include "ui_rectangle.h"

#include <QPainter>

rectangle::rectangle(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::rectangle)
{
    ui->setupUi(this);
}

void rectangle::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);

    QPainter painter(this);
    painter.fillRect(rect(), Qt::green);
}

rectangle::~rectangle()
{
    delete ui;
}



Ответы (0 шт):