как сделать часть кода в виде функции
есть "функция" движения прямоугольника, но в 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;
}