最简单的动画QGraphicsPixmapItem的方法?

时间:2015-12-23 14:31:23

标签: c++ qt qgraphicsitem qpropertyanimation

我想使用QGraphicsPixmapItemQGraphicsScene中为QPropertyAnimation设置动画。

QPixmap pixmap(filePath);
QGraphicsItem *pixmapItem = graphicsScene->addPixmap(pixmap);

QPropertyAnimation animation(pixmapItem, "x"); // here lies the problem
animation.setDuration(30000);
// ...
animation.start();

我查看了该文档,因此我已经知道QGraphicsPixmapItem及其父QGraphicsItem不是QObjectQPropertyAnimation构造函数为QGraphicsItem不存在。根据各种消息来源,最好的方法是创建一个新的类,例如AnimatedGraphicsItem继承自QObjectQGraphicsItem,或者我可以继承QGraphicsObject

class AnimatedGraphicsItem : public QObject, public QGraphicsItem // or public QGraphicsObject
{
    Q_OBJECT
    Q_INTERFACES(QGraphicsItem) // not needed if I inherit from QGraphicsObject, right?
};

我需要准确包含在AnimatedGraphicsItem类的标题和源文件中?一位消息人士告诉我也要将它包含在头文件中,但我想,这已经被继承了?

public:
    AnimatedGraphicsItem(QGraphicsItem *parent = 0);

private:
     virtual QRectF boundingRect() const;
     virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);

我如何使用我的AnimatedGraphicsItem课程?

我是否必须将QGraphicsItem *pixmapItem投射到AnimatedGraphicsItem? (如果是,如何?)我是否必须创建AnimatedGraphicsItem的新实例?

我没有在互联网上找到一个好的例子。

提前致谢!

1 个答案:

答案 0 :(得分:0)

好的,明白了。

我必须将AnimatedGraphicsItem对象,然后setPixmapsetFlag,...和addItem实例化到我的场景中(使用new非常重要)。