制作 QGraphicsPixmapItem 动画的最简单方法?
Easiest way to animate QGraphicsPixmapItem?
我想用 QPropertyAnimation
.
为我的 QGraphicsScene
中的 QGraphicsPixmapItem
制作动画
QPixmap pixmap(filePath);
QGraphicsItem *pixmapItem = graphicsScene->addPixmap(pixmap);
QPropertyAnimation animation(pixmapItem, "x"); // here lies the problem
animation.setDuration(30000);
// ...
animation.start();
我查看了文档,所以我已经知道 QGraphicsPixmapItem
及其父级 QGraphicsItem
不是 QObject
,并且 QPropertyAnimation
构造函数带有 QGraphicsItem
不存在。根据各种消息来源,最好的方法是创建一个新的 class,例如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
class 的头文件和源文件中准确包含什么?一位消息人士告诉我也将其包含在头文件中,但我想,这已经被继承了?
public:
AnimatedGraphicsItem(QGraphicsItem *parent = 0);
private:
virtual QRectF boundingRect() const;
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
我该如何使用我的 AnimatedGraphicsItem
class?
我必须将 QGraphicsItem *pixmapItem
转换为 AnimatedGraphicsItem
吗? (如果是,怎么做?)我必须创建一个新的 AnimatedGraphicsItem
实例吗?
网上没找到很好的例子
提前致谢!
好的,知道了。
我必须实例化我的 AnimatedGraphicsItem
对象,然后将 setPixmap
、setFlag
、……和 addItem
实例化到我的场景(使用 [=14 很重要=]).
我想用 QPropertyAnimation
.
QGraphicsScene
中的 QGraphicsPixmapItem
制作动画
QPixmap pixmap(filePath);
QGraphicsItem *pixmapItem = graphicsScene->addPixmap(pixmap);
QPropertyAnimation animation(pixmapItem, "x"); // here lies the problem
animation.setDuration(30000);
// ...
animation.start();
我查看了文档,所以我已经知道 QGraphicsPixmapItem
及其父级 QGraphicsItem
不是 QObject
,并且 QPropertyAnimation
构造函数带有 QGraphicsItem
不存在。根据各种消息来源,最好的方法是创建一个新的 class,例如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
class 的头文件和源文件中准确包含什么?一位消息人士告诉我也将其包含在头文件中,但我想,这已经被继承了?
public:
AnimatedGraphicsItem(QGraphicsItem *parent = 0);
private:
virtual QRectF boundingRect() const;
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
我该如何使用我的 AnimatedGraphicsItem
class?
我必须将 QGraphicsItem *pixmapItem
转换为 AnimatedGraphicsItem
吗? (如果是,怎么做?)我必须创建一个新的 AnimatedGraphicsItem
实例吗?
网上没找到很好的例子
提前致谢!
好的,知道了。
我必须实例化我的 AnimatedGraphicsItem
对象,然后将 setPixmap
、setFlag
、……和 addItem
实例化到我的场景(使用 [=14 很重要=]).