//myitem.h
#ifndef MYITEM_H
#define MYITEM_H
#include <QGraphicsObject>
class MyItem : public QGraphicsObject
{
Q_OBJECT
public:
MyItem(QGraphicsItem *parent = nullptr);
~MyItem();
QRectF boundingRect() const;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
};
#endif // MYITEM_H
//myitem.cpp
#include "myitem.h"
#include <QPainter>
MyItem::MyItem(QGraphicsItem *parent)
{
}
MyItem::~MyItem()
{
}
QRectF MyItem::boundingRect() const
{
return QRectF(-10-0.5, -10-0.5, 20+1, 20+1);
}
void MyItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
painter->drawRect(-10, -10, 20, 20);
}
//main.cpp
#include "myitem.h"
#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QPropertyAnimation>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QGraphicsScene scene;
scene.setSceneRect(-200, -150, 400, 300);
MyItem *item = new MyItem;
scene.addItem(item);
QGraphicsView view;
view.setScene(&scene);
view.show();
//为图形项的rotation属性创建动画
QPropertyAnimation *animation = new QPropertyAnimation(item, "rotation");
animation->setDuration(2000);
animation->setStartValue(0);
animation->setEndValue(360);
animation->start(QAbstractAnimation::DeleteWhenStopped);//执行后自动销毁该动画对象
return a.exec();
}