Как обновлять координаты эллипса на QGraphicsScene?
Сделал форму, добавил на неё сцену и хочу, чтобы по нажатию на клавишу, объект, созданный на сцене, начал передвигаться.
broun_dvig.h
#ifndef BROUN_DVIG_H
#define BROUN_DVIG_H
#include <QMainWindow>
#include <QGraphicsView>
#include <QPen>
#include <QTimer>
QT_BEGIN_NAMESPACE
namespace Ui { class Broun_dvig; }
QT_END_NAMESPACE
class Broun_dvig : public QMainWindow
{
Q_OBJECT
public:
Broun_dvig(QWidget *parent = nullptr);
~Broun_dvig();
private slots:
void on_btn_start_clicked();
void On_Timer();
private:
Ui::Broun_dvig *ui;
QGraphicsScene * scena;
QGraphicsEllipseItem* ellipse;
QTimer timer;
double fi = rand()*2*3.14;
double t = 0;
double dt = 0.1;
double x,
y,
x0,
y0;
};
#endif // BROUN_DVIG_H
broun_dvig.cpp
#include "broun_dvig.h"
#include "ui_broun_dvig.h"
#include <QPen>
#include <cmath>
Broun_dvig::Broun_dvig(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::Broun_dvig)
{
ui->setupUi(this);
scena = new QGraphicsScene;
ui->graphicsView->resize(600,600);
ui->graphicsView->setScene(scena);
}
Broun_dvig::~Broun_dvig()
{
delete ui;
}
void Broun_dvig::on_btn_start_clicked()
{
QPen pen(Qt::green, 3, Qt::DashDotLine, Qt::RoundCap, Qt::RoundJoin);
QBrush br;
ellipse=scena->addEllipse(x, y, 20, 20, pen, br);
updateGeometry();
timer.start();
}
void Broun_dvig :: On_Timer()
{
x += x * pow(fi,2) * t;
y += y * pow(fi,2) * t;
t+=dt;
this->repaint();
}