1

我想QGraphicsPixmapItem在我的QGraphicsScene,中为 a 设置动画QPropertyAnimation

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

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

我检查了文档,所以我已经知道它QGraphicsPixmapItem和它的父级QGraphicsItem是 no QObject,并且QPropertyAnimation带有 a 的构造函数QGraphicsItem不存在。根据各种消息来源,最好的方法是创建一个新类,例如AnimatedGraphicsItem,它继承自QObject并且QGraphicsItem或者我可以简单地继承自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 *pixmapItemAnimatedGraphicsItem?(如果是,如何?)我必须创建一个新的实例AnimatedGraphicsItem吗?

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

提前致谢!

4

1 回答 1

0

好,知道了。

我必须实例化我的AnimatedGraphicsItem对象,然后setPixmap, setFlag, ... 和addItem我的场景(使用 很重要new)。

于 2015-12-23T16:03:31.657 回答