#ifndef MYITEM_H
#define MYITEM_H
#include <QPainter>
#include <QPaintEvent>
#include <QGraphicsScene>
#include <QGraphicsItem>
#include <QGraphicsView>
#include <QPaintEvent>
#include <QObject>
#include "/home/maciek/Pulpit/C++/obiektowo/rzut.h"
class MyItem : public QGraphicsItem
{
public:
MyItem();
QRectF boundingRect() const;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
ball *ba;
QBrush Brush;
void move();
protected:
};
#endif // MYITEM_H
#include "myitem.h"
#include "dialog.h"
#include <QDebug>
MyItem::MyItem()
{
ba=new ball();
ba->set_posi(0,0);
ba->set_velo(1,1);
setPos(ba->show_px(),ba->show_py());
}
void MyItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
QRectF rec = boundingRect();
QBrush Brush(Qt::black);
painter->translate(10,(scene()->height()-2*y()-10));
painter->scale(1,-1);
painter->drawRect(rec);
painter->fillRect(rec,Brush);
qDebug()<<"px:"<<ba->show_px()<<"py:"<<ba->show_py();
}
void MyItem::move()
{
ba->move();
setPos(ba->show_px(),ba->show_py());
}
QRectF MyItem::boundingRect() const
{
return QRect(0,0,100,100);
}
Piszę program mający symulować ruch, dzielę go na frontend w qt i backend w czystym c++, problem w tym że, natrafiłem na dziwne zachowanie. Szukałem rozwiązania kilka godzin z marnym skutkiem :(
Prostokąt zmienia pozycję skokowo i tylko podczas poruszania całym oknem, co tego zostawia artefakty. Próbowałem prepareGeometryChange() jak pisali na Stacku ale nie pomogło. Czego to może być wina?