我想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 *pixmapItem
吗AnimatedGraphicsItem
?(如果是,如何?)我必须创建一个新的实例AnimatedGraphicsItem
吗?
我在互联网上没有找到一个很好的例子。
提前致谢!